700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > strlen()和sizeof()求字符串长度

strlen()和sizeof()求字符串长度

时间:2019-05-24 01:58:59

相关推荐

strlen()和sizeof()求字符串长度

我们在编写C语言程序时,很多时候都需要求字符串的长度,这时候我们就会想到使用strlen()或者sizeof(),那么它们两者的使用有什么区别呢?在使用的时候需要注意些什么呢?

sizeof()是一个单目运算符,它的计算发生在编译阶段,他的作用是返回一个类型所占的内存字节数。由下图我们可以知道sizeof()中的操作数数可以是数据类型,函数,变量,也可以是具体的值,最后都将转化为计算他们对应的类型所占的内存字节数。但是很多朋友可能会疑惑,明明字符串a1和a2两个数组中存储的都是同样的内容,为什么a1的结果是7,而a2的打印结果却是6呢?这是因为sizeof在计算该数组所占内存空间大小时,将字符串结尾的'\0'也计算进去了,所以最后打印出来的结果是7。

strlen()是一个计算字符串长度的函数。strle()所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0'),返回类型为无符号整型。

注意: 使用时需要添加头文件#include<string.h>

由下图我们可以知道,strlen不能直接加数据类型,它的参数必须是char *的指针。

图中a1,a2的数组名表示数组首元素的地址,strlen的参数接收该地址,然后求得该地址往后直到遇到'\0'的字符的个数。sizeof(a1),在sizeof()中,单独数组名的出现,表示数组的整个大小,不是首元素的地址大小。&a1,表示的是整个数组的地址。

sizeof(a)/sizeof(a[0]):求数组的长度,注意此时也会将’\0'计算在内。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。