size和strlen

作用:用来返回()里面变量或者数据类型占用的内存字节数。

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:

size和strlen
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:    

size和strlen

上一篇:拓扑排序(Topological Order)UVa10305 Ordering Tasks


下一篇:使用fiddler模拟重复请求接口