”从结果可以看到,sizeof(p)其实计算的是指针变量p的类型的大小。指针p的类型是指向整数类型的指针,因此其大小为4“ 此处做如下更正: ”从结果可以看到,sizeof(p)其实计算的是指针变量p的大小。在32位系统上,不管指针p指向的是整型数据,还是字符型数据,short型数据,long型数据等,指针p本身所占的内存字节数均为...
另外,sizeof可以用于计算任意数据类型的大小,包括基本数据类型和自定义数据类型。 而strlen只能用于计算字符串的长度。 因此,sizeof通常用于确定数组所占的存储空间,而strlen用于确定字符串的长度。 2、数组和指针 数组- 能够存放一组相同类型的元素,数组的大小取决于数组的元素个数和元素类型。 指针就是地址,大小都是...
总结:sizeof(pStu->name)求的是成员name的 size,而sizeof(pName)求的是数组指针的 size,两者完全不同,不可以混淆。
printf("%d\n", sizeof(a[1]));// 4 a[1]访问的是数组第二个元素,计算的是数组第二个元素的大小 printf("%d\n", sizeof(&a));//4/8 &a虽然是整个数组的地址,但是还是地址,sizeof(&a)计算的是一个地址的大小 printf("%d\n", sizeof(*&a));//16 &a是取的是整个数组的地址,解引用后就...
但不要以此以为数组和指针是相同的。 只有在两种场合下,数组名不用指针常量表示,其他都是一个常量指针,也称为数组的 “退化” 。两种场合为: 1: sizeof(b) 2: &b 第一种举例: 1intb[4] = {0};2printf("%d\n",sizeof(b)); 输出结果为16,是整个数组的长度,如果b是常量指针,结果应该是指针地址的...
sizeof(数组名):返回数组所有元素占有的内存空间字节数。 sizeof(指针) :返回计算机系统的地址字节数,如果是32位系统,返回4,16位系统返回2。 注:buf2是指针数组,数组的元素是指针,所有sizeof(buf2[1])返回值是4。 sizeof("XXXXX")应该是多少呢?
sizeof函数并不区分数组名与指针,它只是简单告诉你操作数的大小。例如,给数组时,它告诉你数组的大小;给指针时,则告诉你指针的大小。关键在于void printSize(int a[10])中的a,其实它的类型是被调整为指向int的指针,而非数组。当声明参数为「某某类型的数组」时,其会被调整为「某某类型的指针」...
sizeof在对指针和数组的求取中需要注意的地方; #include<stdio.h> int main() { char *p = NULL; char arr[10]; char str[]="hello"; int a, b, d, e, f, g,h; a = sizeof(*p);//指针类型。 a=1; b = sizeof(p);//sizeof求任何指针都是4个字节。b=4; ...
sizeof()的参数为指针和数组 C++或C语言中,都可以使用sizeof()运算符来计算数组的字节大小,除此之外,在C++和C语言中,都可以使用一个指向数组第一个元素的内存地址的指针来引用数组,因此,如果要计算数组的字节大小,或长度,传递数组本身或传递指向数组的指针给sizeof()运算符似乎都是可以的,实际上则不然,二者有...
而如果对指针p求sizeof,它用于等于运行机器上的指针大小,比如在32位机器上,这个值就是4字节;而我的测试机器是64位机器,所以其值为8字节。 4 总结 sizeof求数组和指针是两个不同的操作,对数组它是求数组的整体内存大小,而对指针,其值用于等于机器的字长(即不同的机器有不同的测试结果)。