我对 C 中的字符数组有一些疑问,我有一个大小为 1 的字符数组,逻辑上说当我输入超过 2 个字符时,我应该遇到分段错误,但是puts
正确打印出数组,而printf
打印出某些部分数组连同垃圾值,为什么会这样
#include<stdio.h>
int main()
{
int i;
char A[1];
printf("%d\n",(int)sizeof(A));
gets(A);
puts(A);
for(i=0;i<8;i++)
{
printf("%c\n",A[i]);
}
}
输出/输出:
1
abcdefg
abcdefg
a
f
g
除此之外,我必须在array size
程序中输入多个字符以引发分段错误。是因为堆栈中的 SFP 吗?SFP的大小是4个字节如果我错了请纠正我
1
abcdefghijklmnop
abcdefghijklmnop
a
f
g
h
Segmentation fault