C语言变量的声明、定义、初始化与赋值详解

本文详细解释了变量声明、定义、初始化和赋值在C/C++编程中的区别,强调了全局变量和局部变量的特性,以及extern关键字的作用和可能出现的错误情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 变量的声明、定义、初始化与赋值:

    • 声明是使用一个变量所必需的,其作用是告诉编译器有该标识符的存在,变量的声明可以出现无数次,只要保证每次的声明内容不冲突即可。

    • 定义是使用一个变量所必需的,其前提是该变量已经进行了声明,其作用是为变量开辟内存空间,局部变量只能进行一次定义。对于全局变量,由于全局变量在函数外只能进行至多一次的初始化,不能进行赋值,所以若变量出现多次定义且并不冲突则不会报错,并不会开辟新的内存空间。若变量出现多次定义且冲突,则会报错。

    • 初始化是使用变量非必需的,且最多有一次,其前提是该变量已经进行了定义,其意义是开辟内存空间后的初始值。若在定义时未进行赋值则表示变量未进行初始化,如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为全局作用域的变量,第二条会报重定义错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值