C语言定义和声明

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

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

例如
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);函数参数的声明

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

发布了33 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shunli008/article/details/78695288