1.sizeof不是一个函数,而是一个语言内置的关键字,是C/C++32个关键字中的一个。
2.C/C++语言规定,int前只能加signed、unsigned、auto、const、volative,用来修饰变量的存储方式,可没有提到前面的可以加sizeof。
例如:sizeof 4 与 sizeof(int)的结果都是4;
但是如果是这样:sizeof int 编译不过,sizeof(int)编译通过。
3.sizeof与strlen的关系。sizeof是关键字,strlen是一个标准C语言库函数,用来取字符串的长度。
例如:char* str = “hello”;sizeof(str);//结果输出4,因为一个指针占4个字节。注意:sizeof(int)(*p)结果也是4,因为这里也是求一个指针的长度。
strlen(str);结果输出5,str刚好5个字符,不包括‘\0’结束字符。
4.好了,最好举例复习下。
int a[100];
sizeof(a);// 40此处测量的是一个数组的大小
sizeof(a[0]);//4,数组里的一个整型变量的大小
sizeof(a[100]);
//4,其实已经越界访问了,但是此处不会报错,因为越界错误是运行时异常,编译器不作检查,
//此时a[10]编译器认为就是数组里的一个整形变量,结果当然也是4
void test(int a[100])
{
cout<<sizeof(a)<<endl;//4
//C/C++语言规定函数无法以数组作为参数或者返回值,会转化为指针,所以是一个指针的长度,为4.
}