c语言uf有循环的意思吗,C语言中sizeof与strlen区别

(1)char *  指针

strlen(指针名)

如果参数是指针则计算该指针指向字符序列的长度。(以’\0’ 作为判断标志)例如:

定义char *p=“hello world”;strlen(p)=11,而 sizeof  (p)=4。可以看到 strlen

计算的是指针指向的字符串的长度而sizeof 计算的是指针本身所占用的内存空

间的大小。

(2)数组

strlen(数组名)

如果参数是数组的话,实际传递的是一个指针,strlen 会按照上面处理指针的模

式处理该数组。

我们可以看下面的例子:

char a[]=”hh”;

strlen(a);

很显然strlen 的结果是2。但是如果数组是这样赋值的呢?

char a[]={‘h’,’h’};

strlen(a);

那么现在strlen(a )的结果又是多少呢?这个数就不一定了,原因是 strlen 会去

计算a 地址开始的字符串的长度,由于前一种赋值方式会将hh以字  符串的形式

赋值给数组会将字符串结束符’\0’ 一同赋值,这时strlen 就会检查到结束符停止

计算,而第二种复值方式是以单个字符的形式赋值没有结束  符’\0’, 这时我们用

sizeof 得到的结果是正常的,而用 strlen 由于找不到结束符,会继续的计算直到

找到结束符为止。所以这个数是不确定.

实例2:

char a[]="hello";

char b[]={'h','e','l','l','o'};

strlen(a),strlen(b)的值分别是多少?

前面分析过,strlen是求字符串的长度,字符串有个默认的结束符/0,这个结束符是在定义字符串的时候系统自动加上去的,就像定义数组a一样。数组a定义了一个字符串,数组b定义了一个字符数组。因此,strlen(a)=5,而strlen(b)的长度就不确定的,因为strlen找不到结束符。

-------------------------

One example

#define PATH_TMP             "12345"

static void test_sizeof_strlen() {

char *msg = "12345";

printf("sizeof(msg)---%d\n" , sizeof(msg));

printf("strlen(msg)---%d\n" , strlen(msg));

char array[] = "12345";

printf("sizeof(array)---%d\n" , sizeof(array));

printf("strlen(array)---%d\n" , strlen(array));

printf("sizeof(PATH_TMP)---%d\n" , sizeof(PATH_TMP));

printf("strlen(PATH_TMP)---%d\n" , strlen(PATH_TMP));

}

The output result:

sizeof(msg)---4

strlen(msg)---5

sizeof(array)---6

strlen(array)---5

sizeof(PATH_TMP)---6

strlen(PATH_TMP)---5

python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值