C数组大小限制

时间:2013-12-24 09:37:48

标签: c arrays string

我在Linux Redhat上使用gcc编译器。我很惊讶为什么a[5]a[6](Maya和Mayank)的输出有2个字符差异,尽管它们的大小只有1个字节。

char a[5]="Mayank";
char b[6]="Mayank";
char c[7]="Mayank";

printf("%s\n",a);
printf("%s\n",b);
printf("%s\n",c);

输出:

Maya
Mayank
Mayank

2 个答案:

答案 0 :(得分:8)

前两个printf来电undefined behaviour,因为ab都没有包含终止NUL字符(c,所以最后{{1}本身就可以了。)

答案 1 :(得分:2)

char a[5]="Mayank";

您正在使用包含7个元素(7个字符)的字符串填充5个元素的数组。

"Mayank"包含6个字符串+字符串末尾的空字符('\0'

所以这是未定义的行为。所以你会得到一个随机输出。

同样的事情

char b[6]="Mayank";

可以
char b[7]="Mayank";