size和strlen

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:    

 (参考朱有鹏老师代码)




以上是关于size和strlen的主要内容,如果未能解决你的问题,请参考以下文章

strlen源码

strlen源码剖析(可查看glibc和VC的CRT源代码)

strlen函数的详细说明

字符串strlen函数与sizeof的区别

sizeof()和strlen()

linux下fgets和strlen函数的问题