sizeof和strlen的区别
sizeof和strlen的区别:
- sizeof是运算符,strlen是函数;
- sizeof可以用类型作为参数,而strlen只能用char*型量作为参数,且必须以‘\0’结尾;
sizeof(int)=4;
- 数组名作为sizeof的参数时,不会退化为指针,而作为函数的参数的时候会退化为指针;
char a[10]="abc";
sizeof(a)=10;
strlen(a)=4;
f(int *a[])
{
sizeof(a)=4;
//因为已经退入为指针
}
-
sizeof的值在编译时就已经确定,所以sizeof(x)可以用来创建数组,而strlen的值要在运行期才能确定;
char a[sizeof(int)];
- sizeof计算的是栈上分配的空间的大小,所以static(全局数据区)、动态数组(堆)无法用sizeof统计大小;
- 用sizeof计算结构变量大小时,一定要注意数据对齐问题;(C++传统数组作为参数,传递的都是指向数组首地址的指针,数组长度需要额外形参传入,当然,也可以用容器)