下面的例子中,声明和定义有什么区别?

12 浏览
0 Comments

下面的例子中,声明和定义有什么区别?

这个问题已经有了答案:

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

#include 
int main()
{
   int a;       
   printf("%d\n",a);
}

上面示例中的语句 int a;——是声明还是定义?如果它是声明,printf()语句应该报错,但是它打印出了一个垃圾值,所以我们不能把它称为一个声明。但是根据语法它是一个声明,那么在这种情况下有什么区别呢?

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

当你在 c 中声明一个局部变量时,会在堆栈上为该变量创建空间。当你声明 int a 时,未给 a 指定一个特定的值,它的值将是堆栈上为其分配的内存位置中已经存在的值。这很可能是垃圾值,这就是为什么在打印 a 的值时会看到奇怪的数字。为了避免这种情况,应该声明 int a = 0 或其他数字。

至于如何声明而不是定义变量,应该使用另一个答案中解释的 extern 关键字。

0
0 Comments

无论如何这都是一个声明。在C语言中,每个定义都同时是一个声明。反过来说:有些声明是定义,有些不是。

代码中的 int a; 是一个声明,同时也正好是一个定义。

0