数组int a[4]; sizeof(a)=4*4=16字节 (int为4个字节)int *p=a; sizeof(p)=4字节对数组应用sizeof,可以得到整个数组分配的字节数(存储全部数据占用的内存字节数)对指针应用sizeof,只是得到分配给用来存储一个地址值的指针所用的字节数,即4个字节。(上面都是在32位编译系统) C++中sizeof得到的是字节数,也就是你所说的“长度单位” 求大小,可以手动计算,需要知道数据类型,是否有字节对齐(编译器选项,也可代码控制和切换)。我以前做过统计结构体大小的小程序,同时计算每个成员变量的相对地址。
sizeof()求得实际是分配的内存空间, 对数组sizeof其实不是他的长度,只有当数组是字符数组的时候才是,因为32位下,每个字符占一个字节长度,如果是整型数组sizeof的结果是 sizeof(int)* 数组长度, 至于指针, 他是一个指向变量的地址,本是在32位机器下占用4个字节长度。 c++的长度单位是字节。 当然除了用函数计算长度外, 当然可以人工计算,但是人工计算不一定正确, 不确定是多少为机器, 比如int ar[5]; 32位下人工计算是20. 但是机器计算比较好, sizeof(int) * 5 = 20
楼上回答不错,C++长度指的是变量,数组,指针等在内存中占用的字节数,c++长度可以手工计算,只需根据相就变量类型来推广算,常见的数据类型如 short int ,int,long int,float,double等等,这些分别占用相应字节数,计算机位数不同,占用字节数也不大相同,如上的占用字节数一般是 2,2,4,4,8。比如定义:float a[5],则可计算:4*5=20字节,跟sizeof得到的相同