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

时间:2014-08-17 13:59:50

标签: c declaration definition

#include <stdio.h>

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

上例中的陈述:int a; - 是声明还是定义?如果它是声明,printf()语句应该给出错误,但它会输出一个垃圾值。所以我们不能称之为宣言。但根据语法,它是一个声明。那么这种情况有什么不同呢?

4 个答案:

答案 0 :(得分:4)

这是宣言的事实。 C语言中的每个定义都是同时声明。反方向:一些声明是定义而另一些则不是。

代码中的

int a;也是一个恰好是定义的声明。

答案 1 :(得分:2)

这是一个定义。

对于C中的变量,如果只想声明它,则必须使用'extern'关键字,而不是定义它。可以找到一篇好文章here

答案 2 :(得分:2)

在c中声明局部变量时,会为变量创建堆栈空间。当你声明int a而没有给a一个特定的值时,它的值将是在堆栈中为它预留的位置中的内存中的任何值。这很可能是垃圾值,这就是为什么在打印a的值时会看到奇怪的数字。为避免这种情况,请声明int a = 0或其他一些数字。

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

答案 3 :(得分:-1)

声明意味着我们只是创建一个变量或方法。定义意味着我们为变量&amp;分配一些值。在方法

中做一些功能