C语言中定义和声明的一些差别

定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。
变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
声明:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名。声明可以出现多次。
声明用于向程序表明变量的类型和名字,定义包括声明:当定义变量时声明了它的类型和名字。可以通过使用extern关键字声明变量名而不定义它。
附:extern:在源文件A里定义的函数,在其它源文件里是看不见的(即不能访问)。为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明:
extern 函数原型;
这样,在源文件B里也可以调用那个函数了。 在A里是定义,在B里是声明。一个函数只能(也必须)在一个源文件里被定义,但是可以在其它多个源文件里被声明。
区别:1.定义引起存储分配,是真正产生那个实体。而声明并不引起存储分配。
2.声明变量时不会分配内存,定义变量时才会分配内存。局部变量的声明即是定义。
3.全局变量只能定义一次,可以声明多次,在全局变量不可见的地方但又想使用就得进行声明。函数和变量一样,使用前一定要先声明或者定义,定义本身也是一次声明。
4.例:int a它既是声明,同时又是定义。然而对于extern a来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为”定义”,而把不需要建立存储空间称之为”声明”.很明显我们在这里指的声明是范围比较窄的,也就是说非定义性质的声明。

猜你喜欢

转载自blog.csdn.net/wtzdedaima/article/details/78244880