-
变量的声明、定义、初始化与赋值:
-
声明是使用一个变量所必需的,其作用是告诉编译器有该标识符的存在,变量的声明可以出现无数次,只要保证每次的声明内容不冲突即可。
-
定义是使用一个变量所必需的,其前提是该变量已经进行了声明,其作用是为变量开辟内存空间,局部变量只能进行一次定义。对于全局变量,由于全局变量在函数外只能进行至多一次的初始化,不能进行赋值,所以若变量出现多次定义且并不冲突则不会报错,并不会开辟新的内存空间。若变量出现多次定义且冲突,则会报错。
-
初始化是使用变量非必需的,且最多有一次,其前提是该变量已经进行了定义,其意义是开辟内存空间后的初始值。若在定义时未进行赋值则表示变量未进行初始化,如
int a;
;若在定义时进行了赋值,则表示变量进行了初始化,如int a=1;
。 -
赋值是指对已经定义的变量(未初始化或已经初始化)进行赋值,其前提是该变量已经进行了定义,如
a=1;
。
-
-
变量的声明、定义、初始化与赋值的具体实例:
/* 变量a的仅声明 */
extern int a;
/* 变量a的声明和定义 */
int a;
/* 变量a的声明、定义和初始化 */
int a = 1;
/*变量a赋值的几种情况*/
/* 情形1 */
extern int a; //仅声明a,用于表示a在其他地方已经进行了定义
a = 1; // 对a进行赋值
/* 情形2 */
extern int a; //仅声明a
int a; // 声明并定义a
a=1; // 对a进行赋值
/* 情形3 */
int a=0; //对a进行声明、定义与初始化
a=1 // 对a进行赋值
/* 情景4 */
extern int a=1; //若extern 作用的变量进行了初始化,则extern无效,此语句视为声明定义并初始化。此语句不允许在局部作用域内使用
/* 情形5 */
extern int a; // 仅声明a
int a=1; // 对a进行声明、定义与初始化。在全局作用域内:若a在其他地方已经进行了定义,则该语句会因为重定义报错(全局作用域除外);若a在此其他地方未进行定义,则该语句没有问题。在局部作用域内:表示a为全局作用域的变量,第二条会报重定义错误