6、C语言变量与语句详解

C语言变量与语句详细解析

C语言变量与语句详解

1. 变量初始化与存储类型

1.1 自动变量初始化

自动变量的初始化需要更多开销,因为在程序链接时无法确定存储变量的位置。函数中的局部变量每次被调用时可能会占用不同的位置。因此,自动变量没有默认初始化,显式初始化是通过在块的开头插入一个不可见的赋值语句来完成的。

这种技术有四个后果:
1. 自动变量的初始化并不比赋值语句更高效。除了声明为 const 的变量外,在变量声明中初始化或使用赋值语句只是风格问题。
2. 隐式赋值语句会导致自动变量每次进入声明它们的函数(或块)时都会被重新初始化。这与静态变量不同,静态变量在程序开始执行之前只初始化一次。
3. 由于初始化是在运行时执行的,因此可以使用任何表达式作为初始化器。例如:

int func( int a ) 
{ 
    int b = a + 3; 
}
  1. 除非显式初始化,否则自动变量在创建时将包含垃圾值。

1.2 静态关键字的不同含义

静态关键字在不同上下文中有不同的含义,这常常会让初学者感到困惑。

当用于函数定义或块外的变量声明时, static 关键字将链接从外部变为内部,但存储类和作用域不受影响。以这种方式声明的函数和变量只能从声明它们的源文件中访问。

当用于块内的变量声明时, static 关键字将存储类从自动变为静态,链接和作用域不受

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值