171108-函数作用域和存储特性学习【连续第十六天】

本文探讨了自动存储与静态存储的区别,包括它们的生命周期及使用场景,并详细解释了不同作用域下的变量行为,帮助读者更好地理解编程语言中的存储特性和作用域概念。

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

今天终于又开始有下一步进度了,今天学习了一下存储特性;

先是自动存储,这个其实就是我们平时直接写的int ...,double ..之类的一些代码,而自动存储的特殊性就是当他进入块时才生成,而结束块的时候

他的存储空间就会被撤回;

下个是静态存储,关键字是static和extern,静态存储则是在程序一开始就会被执行,但并不能在整个程序中去使用,用static定义的局部变量则只能

再定义该变量的函数体中使用,而static在第一次使用时就会自动被初始化一个值0,而在结束一次运行后,static变量还是上一次退出后的值;

注:static变量在程序中只会被执行一次,且只在第一次进入时执行,此后在进入时则不会在执行,调试中的显示则是会跳过该语句;

试了一个例题,但好像我的这个编译器无法显示静态变量

这里第一次运行时a才会被分配空间,而b则在一开始就存在存储空间,且被赋值为1;

然后第一次调用输出a=1;b=2;a+b=3;

第二次时原先a的空间已经被撤销,故原值不存在,在下次执行时才会被再次赋值,但b则会保留上一次的2

在运行时a=1;b=3;a+b=4;

在下面是对作用域学习

函数原型作用域,就是在我们声明函数时的语句,此时的形参时可以被省略的,原因就是此时的作用域是仅限于这一个语句的,在此后的语句中是不会被使用的;

块作用域,即一对大括号内的语句则会构成一个块作用域,其中允许嵌套另外的块;

而不在同一块中的相同变量是不会被认为是重复定义的;

下面是对作用域的例题的学习

此处虽然变量名都相同但并不会报错,因为外层a的作用于是整个大的块,而内层a则只是一个内嵌的块中的局部变量;运算时会有一个局部优先原则

目标:完成书后练习,复习所有函数内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值