《gcc五分钟系列》第七节:声明与定义的区别
解释了好多遍,还是有同学不了解在c/c++中声明和定义的区别。这里简单介绍一下。
1、变量
声明:
extern int a;
定义:
int a;
2、函数
声明:
void fun();
定义:
void fun(){}
3、结构体/类
class bar;
class bar{};
那么,声明和定义的本质区别是什么?
答:声明没有为符号分配存储空间、定义会为符号分配存储空间。
extern int a;
这句话是告诉编译器,变量a在别的地方有了,所以不需要在这为它分配存储空间了。
int a;
这句话是告诉编译器,我需要创建一个变量,请为它分配存储空间。
void fun();
函数体包含若干语句,编译后会产生若干指令。声明是告诉编译器,这个函数的指令保存在别的地方了。
void fun(){}
这里会为这个函数分配存储空间、保存函数的指令。
class bar;
同样不分配存储空间。
class bar{};
一个结构体/类在定义的时候会产生它的各种指针,以及内存分配方式的代码。
感觉解释的不是很清楚,不过我能力也就如此了。建议大家多实践,多看看书。
本节完。