#include<stdio.h> void main() {char p[]={'a','b','c'},q[10]={'a','b','c'};

printf("%d%d\n",strlen(p),sstrlen(q));为什么我在资料上看的答案是3.3,而我在用VC上运行的时候结果是7.3;请各位师兄师姐们教教小弟,小弟在此拜谢了。。。。。。。。。。
最新回答
晚街

2024-12-01 07:17:01

我有运行的结果是15 3,知道为什么吗?
因为strlen是用来计算
字符串
长度的,也就是说读到 '\0' 才计算长度,由于 p[] 的长度是未知的,因此strlen出来的结果也是未知的,而 q[] 在最后自动帮你补了个 '\0',因此读出来是3
笑忘书

2024-12-01 10:57:41

char p[]={'a','b','c'}这个数组的大小是随机的,p为字符数组的时候碰到随机的/0结束。大小不是唯一的。。
自在安然

2024-12-01 07:06:30

(gdb) x/32b &p
0x7fffc6eef5d0: 0x61 0x62 0x63 0xc6 0xff 0x7f 0x00 0x00
我在linux上运行结果是6,gdb查看栈内容发现 莫名其妙的出现了:0xc6 0xff 0x7f
估计,一,和操作系统有关,二,和编译器有关。
如果是考试,建议你按照资料上的答案来考,毕竟,批卷子的人的答案是死的。
仙蒂瑞拉

2024-12-01 00:59:05

你这个sstrlen(q)????不明白你这个3是怎么出来的