C语言定义和声明

来源:互联网 发布:防网络尖兵方法 编辑:程序博客网 时间:2024/05/19 06:39

什么是定义?什么是声明?它们有何区别?

定义:(编译器)创建一个对象,为这个对象分配一块内存并给它
取上一个名字,并且这块内存的位置也不能被改变。

例如
main.h里定义了一个int i = 5;
在a.c里包含头文件main.h
在b.c里包含头文件main.h

当a.c或者b.c单独编译时不会报错
但是当啊a.c和b.c编译成一个文件时将会报错(重复定义)

分析:
C语言编译过程:预处理-编译-汇编-链接
int i在头文件定义为全局变量
一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,a.o和b.o链接在一起时编译器会提示你重复定义同一个变量或对象

声明

1.告诉编译器,这个名字已经匹配到一块内存上了,声明可以出
现多次。
2.告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量
名或对象名。
例如:void fun(int i, char c);函数参数的声明

定义声明最重要的区别:定义创建了对象并为这个
对象分配了内存,声明没有分配内存

原创粉丝点击