在编写以下代码时,我应该得到一个错误。数组大小为零(我认为这是非法的),此外 sprintf 正在将“abc”打印到尚未分配任何内存但我得到的输出为“abc”。我不明白为什么?
#include<stdio.h>
#include<string.h>
int main()
{
char a[0];
sprintf(a,"%s","abc");
printf("%s\n",a);
return 0;
}
当我将数组大小设置为 1、2、3 时,我得到了正确的输出,而当显式使用 a 作为指针,即使用 char *a( 这是预期的)。有人可以解释内部工作吗?