详解sizeof与strlen

时间:2023-03-09 19:48:51
详解sizeof与strlen

一,sizeof是C语言的一种单目运算符,与C语言的其他运算符++,--一样,它并不是函数;sizeof()以字节为单位给出了操作数的大小;sizeof的值是无符号int。

strlen是一个函数,只处理字符数组,遍历字符数组中每个元素,当遇到'\0'时停止遍历,返回字符数组中字符的个数,sizeof的值是无符号int。

二,sizeof

1,sizeof用于数组,返回编译时分配的数组空间大小,如果字符数组,注意有'\0':int num[4]; sizeof(num) 返回16、char str[] = "hello";sizeof(str)返回6。

2,sizeof用于指针,返回存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4):char *p = "weqwe";sizeof(p)返回4。

3,sizeof用于类型,返回该类型所占的空间大小。

数据类型 所占字节数
char 1字节
short (short int) 2字节
int 4字节
long (long int) 4字节
float 4字节
double 8字节
long long(long long int) 8字节
long double 10字节

4,sizeof用于对象,返回对象的实际占用空间大小。

5,sizeof用于函数,函数的返回类型所占的空间大小。函数的返回类型不能是void。

三,sizeof的常量性

sizeof的计算发生在编译时刻,所以sizeof被当作常量表达式用。