假设我有以下程序:
int main(void)
{
int i; //Line 1
i=5; //Line 2
int *j; //line 3
j=&i; //line 4
}
如果我尝试在Visual Studio中的第1行之后打印i,它会给我一个编译时错误,说明我使用的单元化变量。这是否意味着没有为i分配存储,而第1行只是一个声明?我理解第2行是一个定义。
另外,3号线和4号线怎么样?它们是声明还是定义?
答案 0 :(得分:5)
第1行和第3行是定义,说它们是声明也是合法的,因为所有定义都是声明。
错误是因为使用未初始化的变量是未定义的行为,而不是因为它们的存储未被分配。
第2行和第4行是赋值语句。你似乎对初始化和任务感到困惑。
int n = 42; //definition with initalization
int m; //definition, but uninitiazlied
n = 10; //assignment
m = 10; //assignment