这个问题已经在这里有了答案:




已关闭10年。






我试图彻底理解C语言中的“定义”和“声明”。

我相信这里的x已定义,因为外部变量会自动初始化为0,并且定义了已声明和初始化的内容。准确吗?

int x;
main() {}

在这种情况下,根据一个x是一个定义,但是为什么呢?它没有被初始化...
int print_hello()
{
  int x;
}

最佳答案

声明是告诉编译器那里有一个看起来像这样的变量。

定义是告诉编译器这是一个变量。

一种是指事物的存在,另一种是事物的存在。

在您的示例中,作用域才是与众不同的所在。声明是在文件范围内进行的,但是在块范围内则无法声明任何内容。因此,第二个例子是一个定义;因为,与int x;无关。

这使第一个示例(在文件范围内)声明存在一些int x;。为了从声明中隐瞒它,您需要指定一个为其分配值的值,从而强制进行内存分配。像这样:int x = 0;
C和C++在分析构造时非常敏感。

关于c - "defining"和 "declaring"之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4411672/

10-11 22:43
查看更多