之前就搞懂了这两个概念,但都讲的不是很清楚或者是讲的不是很好理解。今天翻看了一下C专家编程,里面有关于什么是声明,什么是定义的片段,讲的非常通俗易懂,现在就原本照搬上来。
===================================================
在搞清楚这个问题之前,需要在头脑里重新整理一些基本的C语言术语。记住,C语言中的对象必须有且只有一个定义,但可以有多个extern声明。顺便说一下,这里所说的对象跟C++中的对象并无关系,这里的对象只是跟连接器有关的“东西”,比如函数和变量。
定义是一种特殊的声明,他创建了一个对象;声明简单地说明了在其他地方创建的对象的名字,它允许你使用这个名字。让我们回顾一下这两个术语:
定义 只能出现在一个地方 确定对象的类型并分配内存,用于创建新的对象。例如:int my_array[100];
声明 可以多次出现 描述对象的类型,用于指代其他地方定义的对象(例如在其他文件里)例:extern int my_array[];
小启发
区分定义和声明
只要记住下面的内容即可以分清定义和声明:
声明相当于普通的声明:它所说明的并非自身,而是描述其他地方创建的对象。
定义相当于特殊的声明:它为对象分配内存。