C语言局部变量、静态局部变量、全局变量与静态全局变量!

本文介绍了C语言中局部变量、静态局部变量和全局变量的区别。局部变量在栈上分配,每次函数调用都会重新创建;静态局部变量只初始化一次,后续调用保留上次值;全局变量在数据段分配,作用域覆盖整个文件,静态全局变量限制为本文件使用。此外,还讨论了全局变量的跨文件引用和生命周期特点。
摘要由CSDN通过智能技术生成

基本概念: 作用域:起作用的区域,也就是可以工作的范围。

代码块:所谓代码块,就是用{}括起来的一段代码。

数据段:数据段存的是数,像全局变量就是存在数据段的

代码段:存的是程序代码,一般是只读的。

栈(stack):先进后出。C语言中局部变量就分配在栈中。

 

局部变量

  普通的局部变量定义的时候直接定义或者在前面加上auto

void func1(void)

{

int i = 1;

i++;

printf("i = %d.\n", i);

}

局部变量i的解析:

在连续三次调用func1中,每次调用时,在进入函数func1后都会创造一个新的变量i,

并且给它赋初值1,然后i++时加到2,

然后printf输出时输出2.然后func1本次调用结束,

结束时同时杀死本次创造的这个i。这就是局部变量i的整个生命周期。

下次再调用该函数func1时,又会重新创造一个i,经历整个程序运算,

最终在函数运行完退出时再次被杀死。

 

静态局部变量(static) 静态局部变量定义时前面加static关键字。

总结:

1、静态局部变量和普通局部变量不同。静态局部变量也是定义在函数内部的,静态局部变量定义时前面要

C语言静态局部变量静态全局变量是两种不同作用域的静态存储类变量静态局部变量是在函数内部定义的变量,但它具有静态存储期。这意味着它的生命周期贯穿整个程序执行期间,而不是仅在函数调用期间。静态局部变量在程序执行开始时被初始化,且只初始化一次,之后即使函数执行完毕,该变量的值也不会丢失,它会在下一次函数调用时保持上次的值。 静态全局变量是在函数外部定义的变量,并且被`static`关键字修饰。它有以下几个特点: 1. 静态全局变量的作用域被限定在定义它的文件内部,其他文件不能访问它,除非使用extern关键字声明。 2. 它具有全局作用域,因此它的生命周期也是贯穿整个程序执行期间。 3. 它的默认初始值为0(不同于自动存储类变量,这些变量不会自动初始化)。 这里是一个简单的例子来说明它们的用法: ```c #include <stdio.h> void func() { static int count = 0; // 静态局部变量 count++; printf("Function count: %d\n", count); } int staticGlobalVar = 0; // 静态全局变量 int main() { func(); // 第一次调用,count将初始化为0并打印1 func(); // 第二次调用,count为1(上次调用后的值),打印2 // staticGlobalVar在main函数不可见,但在其他同文件函数可见 return 0; } ``` 这段代码展示了如何在C语言使用静态局部变量静态全局变量静态局部变量`count`在多次函数调用保持了其值,而静态全局变量`staticGlobalVar`在整个文件是可见的,但在其他文件默认是不可见的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值