C语言中定义和声明的一些差别
2017-10-15 22:20
381 查看
定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。
变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
声明:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名。声明可以出现多次。
声明用于向程序表明变量的类型和名字,定义包括声明:当定义变量时声明了它的类型和名字。可以通过使用extern关键字声明变量名而不定义它。
附:extern:在源文件A里定义的函数,在其它源文件里是看不见的(即不能访问)。为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明:
extern 函数原型;
这样,在源文件B里也可以调用那个函数了。 在A里是定义,在B里是声明。一个函数只能(也必须)在一个源文件里被定义,但是可以在其它多个源文件里被声明。
区别:1.定义引起存储分配,是真正产生那个实体。而声明并不引起存储分配。
2.声明变量时不会分配内存,定义变量时才会分配内存。局部变量的声明即是定义。
3.全局变量只能定义一次,可以声明多次,在全局变量不可见的地方但又想使用就得进行声明。函数和变量一样,使用前一定要先声明或者定义,定义本身也是一次声明。
4.例:int a它既是声明,同时又是定义。然而对于extern a来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为”定义”,而把不需要建立存储空间称之为”声明”.很明显我们在这里指的声明是范围比较窄的,也就是说非定义性质的声明。
变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
声明:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名。声明可以出现多次。
声明用于向程序表明变量的类型和名字,定义包括声明:当定义变量时声明了它的类型和名字。可以通过使用extern关键字声明变量名而不定义它。
附:extern:在源文件A里定义的函数,在其它源文件里是看不见的(即不能访问)。为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明:
extern 函数原型;
这样,在源文件B里也可以调用那个函数了。 在A里是定义,在B里是声明。一个函数只能(也必须)在一个源文件里被定义,但是可以在其它多个源文件里被声明。
区别:1.定义引起存储分配,是真正产生那个实体。而声明并不引起存储分配。
2.声明变量时不会分配内存,定义变量时才会分配内存。局部变量的声明即是定义。
3.全局变量只能定义一次,可以声明多次,在全局变量不可见的地方但又想使用就得进行声明。函数和变量一样,使用前一定要先声明或者定义,定义本身也是一次声明。
4.例:int a它既是声明,同时又是定义。然而对于extern a来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为”定义”,而把不需要建立存储空间称之为”声明”.很明显我们在这里指的声明是范围比较窄的,也就是说非定义性质的声明。
相关文章推荐
- 类、类定义、类声明、类的数据成员、类的成员函数的一些注意点
- C语言中的声明和定义
- C语言中的函数定义及函数声明
- C语言中声明和定义的区别
- C语言中一些数据声明(Data declarations)实例总结
- C语言的声明和定义
- C语言如何跨文件调用函数定义中声明的变量
- c语言中 定义和声明 的区别
- C++虚函数声明和定义以及g++编译遇到的一些问题
- C语言中的定义和声明的区别
- 转载:关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题
- 【C语言】11-函数的声明和定义
- 玩儿转C语言:声明和定义(1)
- C语言--定义为数组,声明为指针&定义为指针,声明为数组
- 详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法!
- C语言中一些类型的变量的定义和使用
- C语言中声明与定义的区别
- 类声明和定义中的共有和私有类型的一些注意事项。
- C语言中声明和定义的区别
- C语言指针详解----指针声明定义赋值