查看以下程序
int main()
{
char p[3]="bug";
puts(p);
char *a=p;
puts(a);
return 0;
}
对于第1次投注,我得到正确的输出(即)“bug”
但是对于第二次看跌,我输出为“bug↓”(
答案 0 :(得分:5)
要存储"bug"
+ 0终止符您需要4个字符,您只需分配3.尝试:
char p[] = "bug";
我怀疑第一个 puts
是有效的,因为编译器做了一些有趣的事情并且可以检测到它的大小。
nmichaels有一个更好的解释:第一个有效,因为char *a
紧跟在堆栈上的char [3]之后。空终止符成为a的初始值,只要保持未初始化,p就以零结束。
答案 1 :(得分:0)
char [4] !!!不要忘记最后的\ 0!