关于C#:“定义”和“声明”之间的区别

Difference between “defining” and “declaring”

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the difference between a definition and a declaration?

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

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

1
2
int x;
main() {}

根据一个x的定义,在这种情况下是一个定义,但为什么呢?它没有被初始化…

1
2
3
4
int print_hello()
{
  int x;
}


声明是告诉编译器外面有一个类似这样的变量。

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

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

在您的示例中,范围是造成差异的原因。声明是在文件范围内进行的,但在块范围内不可能声明任何内容;因此,第二个示例是定义;因为,与int x;没有任何关系。

这使得第一个示例(在文件范围内)声明某些int x;存在。要从声明中转换它,需要指定一个值分配给它,强制分配内存。像这样:int x = 0;

C和C++在分析构造时是非常敏感的。


声明在tu中引入一个名称。定义实例化/分配该名称的存储。

1
2
int x; //definition,also a declaration. Every definition is a declaration.
int main(){}


"define"并不意味着"initialized"。它意味着创建了一些东西,而不仅仅是引用。

定义分配但不一定初始化内存。这会带来有趣的调试。