问 :char a [3] = "abc";
答 : 尽管只在极其有限的环境下有用,可它在 ANSI C中是合法的。它声明了一个长度为3 的数组,把它的3个字符初始化为 'a' 'b' 'c' ,但却没有通常终止的 ‘\0’ 字符。因此该数组不是一个真正的C字符串,从而不能用在 strcpy printf %s 等语句中
多数情况下,应该让编译器计算数组初始化的初始化个数,在初始值“abc”中,计算得到的长度 为 4
在下面的程序中,当使用 char a[3] = "abc",我们打印时,多显示了写内容。
- #include <stdio.h>
-
-
int main()
-
{
-
char a[3] = "abc";
-
char b[] = "abc";
-
printf("a[3] %s\n", a);
-
printf("b[ ] %s\n", b);
-
return 0;
-
}
可以正常编译,但是显示 a[3]时,多显示内容。
是没有 '\0',导致本来‘\0’ 上的内容 可能是 其他内容了
阅读(2040) | 评论(0) | 转发(0) |