这个问题已经在这里有了答案:
已关闭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/