最近在学习c语言 然后刷课时看到这个 strlen()函数 然后作为小白的我也是去跟着教程打了 然后报错 去网上查了才知道这个是<cstring>库里面的函数 然后是看到有个弹幕就说用不了的可以用sizeof()这个函数然后就去试了试 结果和教程上的输出结果并不一样 于是就去网上找了相关资料 然后就记录分享一下有什么不对的地方还请各位大佬指出
这两个函数都与计算内存大小有关,但是它们作用是不太相同
然后这边也是打了一下
运行结果为
然后比较重要的一点就是
{‘a’,'b','c'}数组在末尾结束时候不会自动添加'\0'收尾
相反"abc"在结尾时会自动添加'\0'收尾。
strlen是计算实际长度所以前两个输出结果为3
然后第三个是在结尾添加了"\0"结尾所以输出4
第四个没有\0则是3
然后第一张图片也注释了这边就再写一下,内容来源与网上查找的资料
sizeof() 和 strlen() 的主要区别在于:
- sizeof() 是一个运算符,而 strlen() 是一个库函数。
- sizeof() 计算的是变量或类型所占用的内存字节数,而 strlen() 计算的是字符串中字符的个数。
- sizeof() 可以用于任何类型的数据,而 strlen() 只能用于以空字符 '\0' 结尾的字符串。
- sizeof() 计算字符串的长度,包含末尾的 '\0',strlen() 计算字符串的长度,不包含字符串末尾的 '\0'。
sizeof() 函数是一个运算符而不是函数,用于计算一个类型或变量所占用的内存字节数。可以用它来获取任何类型的数据的字节数,包括基本数据类型、数组、结构体、共用体等等。
strlen() 函数用于计算一个字符串的长度,即它所包含的字符个数(不包括字符串结尾的空字符 '\0')。
需要注意的是,strlen() 函数只能用于计算以空字符 '\0' 结尾的字符串的长度,如果字符串中没有空字符,则 strlen() 函数的行为是未定义的。
然后差不多就这些了吧然后 就当写的第一篇文章了