#include <stdio.h>
int main()
{
int a;
printf("%d\n",a);
}
上例中的陈述:int a;
- 是声明还是定义?如果它是声明,printf()
语句应该给出错误,但它会输出一个垃圾值。所以我们不能称之为宣言。但根据语法,它是一个声明。那么这种情况有什么不同呢?
答案 0 :(得分:4)
这是宣言的事实。 C语言中的每个定义都是同时声明。反方向:一些声明是定义而另一些则不是。
代码中的 int a;
也是一个恰好是定义的声明。
答案 1 :(得分:2)
这是一个定义。
对于C中的变量,如果只想声明它,则必须使用'extern'关键字,而不是定义它。可以找到一篇好文章here
答案 2 :(得分:2)
在c中声明局部变量时,会为变量创建堆栈空间。当你声明int a
而没有给a
一个特定的值时,它的值将是在堆栈中为它预留的位置中的内存中的任何值。这很可能是垃圾值,这就是为什么在打印a
的值时会看到奇怪的数字。为避免这种情况,请声明int a = 0
或其他一些数字。
至于如何声明而不是定义变量,你应该使用extern
关键字,如另一个答案所述。
答案 3 :(得分:-1)
声明意味着我们只是创建一个变量或方法。定义意味着我们为变量&amp;分配一些值。在方法
中做一些功能