首页 > 解决方案 > 我们可以声明数组的大小为零吗?

问题描述

main()
{
    int x[0];
    scanf("%s",x);
   printf("%s",x);
} 

为什么当我输入 qwerty79 时这个程序没有显示任何错误,而这个程序给我输出 qwerty79?

标签: ccompiler-errors

解决方案


在此,您声明具有 0 个成员的 int x 数组意味着它们没有为数组分配内存空间,并且它们没有内存位置名称 x。所以,当您输入整数字符串时,它们没有类型检查,另一个原因是编译器只知道有一些变量 x 但该类型未知,因为它们没有 x 的内存分配。所以,您的程序没有给出任何错误。有关详细信息,您必须阅读编译过程状态理论,它是编译器设计的一部分主题。


推荐阅读