inta[]={1,2,3,4};printf("%d\n",sizeof(a[1]));//4printf("%d\n",sizeof(a));//16//sizeof(a) 就是数组名单独放在sizeof内部 计算的是整个数组的大小。printf("%d\n",sizeof(a+0));// 4/8//a + 0 a不是单独放在sizeof()里面,则是数组首元素的地址,sizeof则是计算数组首元素地址...
对于指针来说,sizeof 返回的是指针本身(即存储地址的变量)的大小,而不是指针所指向类型的大小。 要获取指针指向类型的大小,你需要使用指针,并对该指针进行解引用。但是,请注意,你不能直接对原始指针使用 sizeof 来获取它所指向类型的大小,因为 sizeof 不适用于指针本身。你需要先解引用指针,然后对解引用后的对象...
答案是和一个 int 类型的大小相同:4字节。 所以,若有: int* pInt; char* pChar; bool* pBool; float* pFloat; double* pDouble; 则: sizeof(pInt)、sizeof(pChar)、sizeof(pBool)、sizeof(pFloat)、sizeof(pDouble)的值全部为:4。 PS:你敢拆电脑吗?拆开电脑,认得硬盘数据线吗?仔细数数那扁宽...
不, sizeof(int) 是实现定义的,通常是 4 个字节。 另一方面,为了寻址超过 4GB 的内存(32 位系统可以做到),您的指针需要为 8 字节宽。 int* 只是将地址保存到“内存中的某处”,并且您不能仅用 32 位寻址超过 4GB 的内存。 原文由 ScarletAmaranth 发布,翻译遵循 CC BY-SA 3.0 许可协议 有...
注意这里用到的int n = sizeof(a) / sizeof(int);,这样使用时,无法得到正确的数组大小,可能是因为在数组名a传递给函数后,函数只将其认为是一个普通指针,并不知道其是否是一个数组或数组有多少个元素;在如下使用方式下,才能够得到数组的正确大小: ...
如果是定义的一个指针,那sizeof(Buf)就等于4(32位机)或2(8位机),如果定义的是数组,就是数组大小...
说明了数组名a并不是一个int型的指针,而是一个新的数据类型,是一个A10_i类型,代表大小为10的int型的数组。而A10_i这个数据类型是会在内存中连续占用10个int型的空间,所以sizeof(a)会返回一个10*4的结果。而&a是一个PA10_i类型,就是指向A10_i数据类型的一个指针,一个指针的大小当然为8了。(根据系统的...
voidfunc(charstr[50])//鼠标指向调用函数时,显示void func(char* str) { printf("A %d B %d\n",sizeof(str),strlen(str)); } intmain(intargc,char** argv) { charstr1[]="HelloWorld"; char* pStr1=str1; printf("C %d D %d\n",sizeof(str1),sizeof(pStr1++));//sizeof=strlen+1 ...
字节,*array是指针指向的元素 ,sizeof(*array)是指针指向的元素的大小 ,sizeof(array) / sizeof(*array)就是 4数据类型大小 , 该值明显与数组大小不同 ; 通过上述公式 , 即可验证一个 变量 是 数组 还是 指针 ; 计算数组大小宏定义 : 代码语言:javascript ...