声明、定义本质的区别:有无内存的分配
1、声明:
一般来说,身后名是加了 extern 关键字,比如:
extern int a; // 只是声明
这个过程,是声明,告诉编译器,这个变量已经在别的地方定义过了,这个只做基本的声明,这个过程并没有为其分配内存。
2、定义:
int x; // 声明 + 定义
完成了定义,事实上,定义就包含了声明,编译器会为其分配内存。
3、初始化:
int x = 10;
初始化,定义的都以后分配了内存了,更别说是初始化了。
4、一步完成:
extern int pi = 3.14;
一般完成了声明,定义,初始化,更当然是分配了内存。
5、本质的区别
声明、定义、初始化、的本质的区别在于有无分配内存。显然,声明只是告诉了编译器存在这么一个变量或者函数的声明,只是告诉了编译存在这么一个函数而已,这个函数或者变量在其他的位置定义过了,所以在这个过程中没有为其再次分配内存;定义,则编译器会为其变量分配内存空间。初始化,则是完成了,为其分配的内存填指定的赋值而已。
6、理解
声明理解为:普通的声明,告诉编译器这个变量是在其他的地方创建的对象。
定义理解为:一个特殊的声明,会为声明的变量进行分配内存。