通过几个题来加深对sizeof 和 strlen的理解
题目一
#include <stdio.h>
int main()
{
char str[] = "hello CSDN"; //注意这里存放了'\0'
printf("%d %d\n", sizeof(str), strlen(str));
return 0;
}
运行结果 11 10
分析:首先将hello CSDN的内容存放在字符数组中(C语言没有专门用来储存字符串的类型 我表示不理解)
接下来 我们要知道
sizeof(str):获取数组的总大小,11个元素,每个元素占1个字节,因此总共是11个字节(‘\0’也算)
strlen(str): 获取字符串中有效字符的个数,不算’\0’,因此总共10个有效字符
题目二
int main()
{
char acX[] = "abcdefg";
char acY[] = { 'a','b','c','d','e','f','g' };
printf("%zd %zd\n", sizeof(acX), sizeof(acY));
printf("%zd %zd\n", strlen(acX), strlen(acY));
return 0;
}
重点理解strlen是计算字符串中有效字符的个数,不计算’\0’
第十八行代码没有储存’\0’导致第二十行代码输出的不是理想的值,而是一个随机值
嗷嗷 顺便说一下,sizeof和strlen的返回类型都是sizeof_t,所以都要用%zd来打印