这是一个交流程序
#include<stdio.h>
main()
{
int(*p)[3][4];
printf("size of p= %d",sizeof(p));
printf("size of *p= %d",sizeof(*p));
return 0;
}
我可以理解(* p)的大小应该是数组的总大小,在这种情况下为48个字节。但是gcc版本4.2.1给出了p = 8的大小。
因为指针的值是一个地址,所以它的值不等于它所指向的值。否则,指针将不是指针,它们将只是正则变量,因此无用。
如果您使用的是64位计算机,则指针的大小将始终为8个字节。
编辑:如果您想知道为什么sizeof(*p)
是8
它,那是因为*p
求值是它所指向的元素数组中的第一个(除非您增加它)元素。所以*p
= p[0]
,*(p+n)
=p[n]
等
因此,sizeof(*p)
始终等于类型p
所指向的大小。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句