函数、作用域以及生命周期

C语言函数与变量特性详解,
本文详细介绍了C语言中的函数概念、特点、用途,包括函数定义、返回值、调用规则、参数传递、存储类型(如auto、register、static和extern)以及作用域和生命周期。同时讨论了栈在函数调用中的运用。

一、函数

        1.众所周知,一个c语言程序中只能有一个主函数,那就是main()函数,相信对比主函数我们可以看出c语言中函数的定义应为:

返回值类型  函数名 (数据类型1, 2, 3,......)          //函数首部

{

        语句块;

        return 值;(常量、变量、表达式、函数调用)

}

{}之间的为函数体

        2.函数特点:

        ①封装简化有规律或重复性的代码,提高代码的复用性;

        ②划分模块,提高代码的可读性。

        3.为什么需要用函数?

        相信通过上面的特点可以看出,一些有规律的比如要求两个数字之和,用for循环就不能满足需求,因为那两个数字都是不固定的,后面也有可能是另外几个数字比较大小,这就可以用到我们学的函数来封装它,然后不管是那两个数字只要把数值传进我们封装好的函数之后调用就可以了。

        4.当函数返回值不写时,编译器默认为int类型;当函数返回值类型与实际返回类型的值得类型不一致时,以返回值类型为准,会发生数据类型隐式转换。

        5.函数调用:函数名();括号中有定义的有形参就传入实参,没有就可以不传值。

        6.函数传参:数量要一致类型要匹配;

        ①值传参:实际上就是拷贝,两个的空间相互独立。

        ②全局变量传参:利用全局变量的全局作用域,在两个函数间进行读写实现信息传递。

        ③数组传参:传递的是一个地址空间。

        7.函数声明:函数首部加上分号,如果自定义函数在main函数之后定义,一定要在前面声明函数;定义一般会开辟对应空间;声明一般不会开辟对应空间;声明可以有多次,定义只能有一次。

        8.压栈(入栈):函数调用跳转到被调函数,为被调开辟栈帧称为压栈;弹栈(出栈):被调函数执行结束跳转回主调函数,被调栈帧回收称为弹栈

32 CPU   

数据总线: 32;
地址总线: 32     0 - 2^32-1    2^33   2^2 * 2^10(1024) * 2^10(1024) * 2^10(1024);       4G

二、变量的存储类型

        1.auto(自动的变量、局部变量、默认):存放在系统栈空间,由操作系统自动管理

        2.register(建议性:寄存器变量):将数据变量存放在寄存器内;

        3.static(静态变量):

        ①修饰局部变量,保存在数据区,具有和全局变量一样的声明周期,作用域不变。

        ②修饰全局变量时,不改变生命周期,但是全局变量只能在当前文件使用

        ③修饰函数也只能在当前文件中使用

        4.extern(外部变量):

        ①extern修饰全局变量,声明此变量的定义在外部源文件

        ②extern修饰函数,声明此函数的定义在外部源文件

三、作用域与生命周期

        1.作用域:变量在程序中的使用范围。

        ①局部变量的作用域从定义开始到离它最近的花括号结束;作用域重叠时,最近的变量作用域会屏蔽较远的。

        ②全局变量的作用域是从定义开始到程序结束。

        2.生命周期:变量从开辟内存到回收的整个过程。

        ①局部变量:从程序执行到定义时开辟内存空间,到离开作用域回收空间。

        ②全局变量:从编译阶段开辟内存空间(分配好了存储位置),到整个应用程序结束回收空间。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小楷呀!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值