声明、定义本质的区别:有无内存的分配


1、声明:

    一般来说,身后名是加了 extern 关键字,比如:

extern int a; // 只是声明

    这个过程,是声明,告诉编译器,这个变量已经在别的地方定义过了,这个只做基本的声明,这个过程并没有为其分配内存。

2、定义:

int x; // 声明 + 定义

    完成了定义,事实上,定义就包含了声明,编译器会为其分配内存。

3、初始化:

int x = 10;

    初始化,定义的都以后分配了内存了,更别说是初始化了。

4、一步完成:

extern int pi = 3.14;

    一般完成了声明,定义,初始化,更当然是分配了内存。

5、本质的区别

    声明、定义、初始化、的本质的区别在于有无分配内存。显然,声明只是告诉了编译器存在这么一个变量或者函数的声明,只是告诉了编译存在这么一个函数而已,这个函数或者变量在其他的位置定义过了,所以在这个过程中没有为其再次分配内存;定义,则编译器会为其变量分配内存空间。初始化,则是完成了,为其分配的内存填指定的赋值而已。

6、理解

    声明理解为:普通的声明,告诉编译器这个变量是在其他的地方创建的对象。

    定义理解为:一个特殊的声明,会为声明的变量进行分配内存。

posted @ 2015-12-28 11:05  qxj511  阅读(537)  评论(0编辑  收藏  举报