size和strlen
sizeof运算符(用法类似函数)
作用:用来返回()里面变量或者数据类型占用的内存字节数。
sizeof存在的价值?
主要是因为在不同平台下各种数据类型所占的内存字节数不尽相同(譬如int在32位系统中为4字节,在16位系统中为2字节···)。所以程序中需要使用sizeof来判断当前变量/数据类型在当前环境下占几个字节。
strlen是一个C库
函数(可用man strlen 查看在哪个头文件中)
作用:测量字符串的有效长度,一定要注意strlen接收的参数必须是一个字符串(字符串的特征是以'\0'结尾)
例如:
char str[] = "hello"; printf("sizeof(str) = %d.\n", sizeof(str)); // 6 将\0也算在内 printf("sizeof(str[0]) = %d.\n", sizeof(str[0])); // 1 打印的是首字符 printf("strlen(str) = %d.\n", strlen(str)); // 5 字符串的有效长度,不包括末尾符 注:str[]是字符串数组,在末尾是用“\0”结尾;
例子2:
char str[] = "hello"; char *p = str; printf("sizeof(p) = %d.\n", sizeof(p)); // 4 相当于sizeof(char *),指针变量的长度 printf("sizeof(*p) = %d.\n", sizeof(*p)); // 1 相当于sizeof(char),字符数组的首字符长度 printf("strlen(p) = %d.\n", strlen(p)); // 5 相当于strlen(str),字符串的有效长度 注:在32位的系统中所有的指针长度都为4:
(参考朱有鹏老师代码)