如有不正确或者个人看法意见等欢迎发言
我们先来看代码:
#include<stdio.h>
int main() {
char* p = "abcdef";
printf("%d\n",strlen(&p));//随机值3
printf("%p\n", p);//00937BD8
}
随机值3怎么来的呢?
【如果p指针变量中有\0,打印
必然小于4
】
为什么?
可以看到,其中p代表a的地址,对char*p进行&,那就是取出存放a地址的变量的地址
那么strlen访问&p,
此时&p指向它存放的内容
(a的地址00937BD8),以字节为单位读解,因为我这里是小端存储;
所以从右向左读取,1字节D8 2字节7B 3字节93 最后遇到00==\0,停止
一
共读取了3个字节为单位的长度
,于是打印3,如果没有\0(00),打印的随机值就会大于p地址的大小
版权声明:本文为weixin_58791060原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。