2025年4月1日 星期二 乙巳(蛇)年 正月初二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

利用 strlen 和 sizeof 求取字符串长度注意事项

时间:02-27来源:作者:点击数:33

首先,strlen是函数,sizeof是运算操作符,二者得到的结果类型为size_t,即unsigned int类型。大部分编译程序在编译的时候就把sizeof计算过了,而strlen的结果要在运行的时候才能计算出来。

对于以下语句:

  • char *str1 = "asdfgh";
  • char str2[] = "asdfgh";
  • char str3[8] = {'a', 's', 'd'};
  • char str4[] = "as\0df";

执行结果是:

  • sizeof(str1) = 4; strlen(str1) = 6;
  • sizeof(str2) = 7; strlen(str2) = 6;
  • sizeof(str3) = 8; strlen(str3) = 3;
  • sizeof(str4) = 6; strlen(str4) = 2;

str1是字符指针变量,sizeof 获得的是该指针所占的地址空间,32 位操作系统对应 4 字节,所以结果是 4;strlen 返回的是该字符串的长度,遇到\0结束,\0本身不计算在内,故结果是 6。

str2 是字符数组,大小由字符串常量 "asdfgh" 确定,sizeof 获得该数组所占内存空间大小,包括字符串结尾的\0,所以结果为 7;strlen 同理返回 6。

str3 也是字符数组,但大小确定为 8,故 sizeof 得到的结果是 8;strlen 统计\0之前所有字符的个数,即为 3;

str4 是常量字符数组,sizeof 得到字符总数即 6;strlen 计算至\0结束,因此返回 2;

总结一句就是 sizeof 计算的是变量的大小,而 strlen 计算的是字符串的长度,前者不受字符\0影响,后者以\0作为长度判定依据。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门