1. 对于字符数组,strlen和sizeof的值是否相同?
不同。strlen的计算结果是字符串的实际长度,sizeof的计算结果是数组所占的存储空间。
eg:
char a[10] = “hello”;
strlen(a) = 5;
sizeof(a) = 10;
2. Sizeof本质上是函数还是宏?
二者都不是。
sizeof是运算符,并且其计算发生在编译时刻,结果可以被当作常量表达式使用,可以用于数组定义。
eg:
int arr[sizeof(a)];
3. Sizeof的返回值是什么类型?
sizeof的返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一般定义为:typedef unsigned int size_t;