来个标准回答:
第一:
char a[5] = "12345";
这里只是定义了一个数组 a(数组中的每个元素是一个 char),并不是定义了一个字符串
所以从 a[0] 到 a[4] 分别是 char:'1' 到 '5'
而这个数组的长度是 5,只能使用 a[0] 到 a[4],
并没有给 a[5] 分配空间,不能去使用 a[5]
第二:
printf("%s", a) ,如果 a 不是「字符串」,就是「未定义行为」;
而这里的 a 是一个「数组」,不是「字符串」,就是一个「未定义行为」。
所谓「未定义行为」,就是任何事情都可能发生,可能符合你的期望,也可能不符合;
作为 C 程序员,目标就是不要写出「未定义行为」的代码
【 在 shouge111 的大作中提到: 】
: 变量a长度是5,那么根据教材,它只能存储1234,最后一个存储单元应该存储字符串结束标志\0。
: 但是实际运行,a存储了12345.这是怎么回事呢?printf打印也是打印了12345
: #include<stdio.h>
: ...................
--
FROM 101.71.39.*