"定义"和"声明"的区别

7 浏览
0 Comments

"定义"和"声明"的区别

这个问题已经有了答案

可能是重复的问题:

什么是定义和声明之间的区别?

我试图全面了解C语言中的\"定义\"和\"声明\"。

我相信这里的x被定义了,因为外部变量会自动初始化为0,并且被声明并初始化的东西就是定义。这是准确的吗?

int x;
main() {}

根据某个说法,在这种情况下x是一个定义,但为什么?它没有被初始化...

int print_hello()
{
  int x;
}

admin 更改状态以发布 2023年5月21日
0
0 Comments

"Define"并不意味着"初始化",而是指创建而非仅仅是引用。

定义会分配内存,但不一定会初始化。这可能会导致有趣的调试。

0
0 Comments

声明是告诉编译器有一个变量,长得像这样。定义是告诉编译器这是一个变量。一个是关于事物的存在,另一个是事物本身。在你的例子中,范围是造成差异的原因。声明是在文件范围内进行的,但在块范围内不可能声明任何东西;因此,第二个例子是一个定义;因为,没有需要做的事情了 int x;。这使得第一个例子(在文件范围内)成为某个 int x; 的声明存在。为了将其从声明转换,需要指定给它赋值,强制进行内存分配。像这样:int x = 0;在分析构造时,C 和 C++ 非常敏感于范围。

0