标题:strlen是不是只能计算字符数组的长度,不能算int型数组
只看楼主
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:1 
strlen函数求字符串长度的原理是:从起始地址开始按字节读取,读取到'\0'(就是0)停止,
int a[2]={2,3}; a的两个元素占8个字节:0x02 0x00 0x00 0x00   0x03 0x00 0x00 0x00
那么strlen(a)从0x02读起,到0x00就停止,于是返回长度1,如果你把a[0]赋值为257,那就会返回2,a[0]赋值为65793,那就会返回3, a[0]赋值为16843009,就会返回5
数组当作函数参数,那就只是一个指针了,对于32位系统那长度就是4
a=(int*)malloc(2);
printf("%d\n",strlen(a));   这个结果是不定的,*a的值是随机的,a后面的地址内的值也是随机的,而strlen会从a开始一直往后读,直到读到0为止。
2020-03-31 09:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500746-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 2.335005 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved