【发布时间】:2018-02-17 11:57:51
【问题描述】:
#include <stdio.h>
int main()
{
int i = 0;
int *a;
do
{
scanf("%d",&a[i]);
i++;
}
while (a[i-1]!=-1);
}
此代码读取数字,直到遇到-1。指针a 未初始化,但代码仍可编译和运行而没有任何错误。为什么?这可以是一种在不声明其大小的情况下初始化数组的方法吗?
【问题讨论】:
-
为什么会出现 compile-time 错误?
-
代码肯定会死。这是未定义的行为,这意味着实际上任何事情都可能发生。
-
C 给你绞索和刽子手。小心
-
因为你没有给@987654324分配任何值@ garabage 存储在那里,并且该垃圾具有内存地址并且可以用作数组
-
我在您的代码中没有看到任何数组。你在做什么?