什么是定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它 取上一个名字,这个名字就是我们经常所说的变量名或对象名。
一个变量或对象在一定的区 域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义 同一个变量或对象。
什么是声明:有两重含义,如下:
第一重含义:告诉编译器,这个名字已经匹配到一块内存上了,下面的代码用到变量或对象是在别的地方定义的。
第二重含义:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量 名或对象名。这种声明最典型的例子就是函数参数的声明
举例:
int i;是定义
虽然没有赋值,但是声明了整型变量,直接就开始用了,所以系统会先自动赋初值0,故该处是定义。
如果你只声明一个变量而没有给他赋值的语句:如果这个代码在C语言中,并且在之后的代码里面你没有用到这个变量,编译成程序运行时,编译器自动帮你删掉你的声明语句!所以就不占内存;如果你用它了,他就是一个随机数,就会占内存。
extern int i;是声明
这个声明既没有赋值,也不会直接开始使用。
extern int i =0;是定义
这个声明赋值了。
void a(void);是声明