”从结果可以看到,sizeof(p)其实计算的是指针变量p的类型的大小。指针p的类型是指向整数类型的指针,因此其大小为4“ 此处做如下更正: ”从结果可以看到,sizeof(p)其实计算的是指针变量p的大小。在32位系统上,不管指针p指向的是整型数据,还是字符型数据,short型数据,long型数据等,指针p本身所占的内存字节数均为...
另外,sizeof可以用于计算任意数据类型的大小,包括基本数据类型和自定义数据类型。 而strlen只能用于计算字符串的长度。 因此,sizeof通常用于确定数组所占的存储空间,而strlen用于确定字符串的长度。 2、数组和指针 数组- 能够存放一组相同类型的元素,数组的大小取决于数组的元素个数和元素类型。 指针就是地址,大小都是...
编译器编译的时候就会记住 array是一个 int类型的数组,长度为4,所以sizeof的时候会直接将这个结果计算...
*(b+1) 是指 *(&b[0]+1*sizeof(int)) 指针加1的解引用就是b[1]的值 //( 指针+n 是指针后移n*指针指向的类型字节 最好不要超过数组最后一位) *b = *(&b[0])
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(数组名):返回数组所有元素占有的内存空间字节数。 sizeof(指针) :返回计算机系统的地址字节数,如果是32位系统,返回4,16位系统返回2。 注:buf2是指针数组,数组的元素是指针,所有sizeof(buf2[1])返回值是4。 sizeof("XXXXX")应该是多少呢?
sizeof()的参数为指针和数组 C++或C语言中,都可以使用sizeof()运算符来计算数组的字节大小,除此之外,在C++和C语言中,都可以使用一个指向数组第一个元素的内存地址的指针来引用数组,因此,如果要计算数组的字节大小,或长度,传递数组本身或传递指向数组的指针给sizeof()运算符似乎都是可以的,实际上则不然,二者有...
sizeof函数并不区分数组名与指针,它只是简单告诉你操作数的大小。例如,给数组时,它告诉你数组的大小;给指针时,则告诉你指针的大小。关键在于void printSize(int a[10])中的a,其实它的类型是被调整为指向int的指针,而非数组。当声明参数为「某某类型的数组」时,其会被调整为「某某类型的指针」...
sizeof(pStu->name),首先pStru是指向结构体stu的指针,如果要计算sizeof(pStru)的值,在 64 位机器上,结果应该为 8,而代码中计算的是sizeof(pStu->name),即计算的是成员name的 size,因此,sizeof(pStu->name)的值为 100;而pName是指向name的指针,因此在 64 位机器上,sizeof(pName)=8。
而如果对指针p求sizeof,它用于等于运行机器上的指针大小,比如在32位机器上,这个值就是4字节;而我的测试机器是64位机器,所以其值为8字节。 4 总结 sizeof求数组和指针是两个不同的操作,对数组它是求数组的整体内存大小,而对指针,其值用于等于机器的字长(即不同的机器有不同的测试结果)。