学习C语言(8)

整理今天的学习内容

1.嵌套调用和链式访问

(1)函数的嵌套调用

例:实现计算某年某月的天数

(2)链式访问

链式访问就是将一个函数的返回值作为另一个函数的参数

如:把strlen的返回值直接作为printf函数的参数

了解返回值(printf) 

printf函数返回的是打印在屏幕上的字符的个数 

2.函数的声明和定义 

(1)单个文件

C语言编译器对源代码进行编译是从第一行往下扫描的,如果在函数调用之前没有发现函数的定义,就会报警告,为了解决这个问题,应该在函数调用之前先声明这个函数,声明函数需要交代清楚函数的返回类型,函数名,和函数的参数(相当于函数定义的第一行),函数声明中参数只保留类型,省略掉名字也是可以的

函数的定义也是一种特殊的声明,所以也可以把定义放在调用之前

(2)多个文件

一般情况下,函数的声明,类型的声明放在头文件(.h)中,函数的实现放在源文件(.c)中

 

3.static和extren

(1) static和extren都是C语言中的关键字

static是“静态的”的意思,可以修饰局部变量,全局变量和函数

extern是用来声明外部符号的

作用域和生命周期

作⽤域(scope)是程序设计概念,通常来说,⼀段程序代码中所⽤到的名字并不总是有效(可⽤)的,⽽限定这个名字的可⽤性的代码范围就是这个名字的作⽤域。

1. 局部变量的作⽤域是变量所在的局部范围

2. 全局变量的作⽤域是整个⼯程(项⽬)

⽣命周期指的是变量的创建(申请内存)到变量的销毁(收回内存)之间的⼀个时间段

1. 局部变量的⽣命周期是:进⼊作⽤域变量创建,⽣命周期开始,出作⽤域⽣命周期结束

2. 全局变量的⽣命周期是:整个程序的⽣命周期

(2) static修饰局部变量

结论:static修饰局部变量改变了变量的⽣命周期,⽣命周期改变的本质是改变了变量的存储类型,本来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。存储在静态区的变量和全局变量是⼀样的,⽣命周期就和程序的⽣命周期⼀样了,只有程序结束,变量才销毁,内存才回收,但是作⽤域不变的
 (3)static修饰全局变量

               

(extern 是⽤来声明外部符号的,如果⼀个全局的符号在A⽂件中定义的,在B⽂件中想使⽤,就可以使⽤ extern 进⾏声明,然后使⽤)

 结论:⼀个全局变量被static修饰,使得这个全局变量只能在本源⽂件内使⽤,不能在其他源⽂件内使⽤。本质原因是全局变量默认是具有外部链接属性的,在外部的⽂件中想使⽤,只要适当的声明就可以使⽤;但是全局变量被 static 修饰之后,外部链接属性就变成了内部链接属性,只能在⾃⼰所在的源⽂件内部使⽤了

(4)static修饰函数

 

其实 static 修饰函数和 static 修饰全局变量是⼀模⼀样的,⼀个函数在整个⼯程都可以使⽤,被static修饰后,只能在本⽂件内部使⽤,其他⽂件⽆法正常的链接使⽤了

本质是因为函数默认是具有外部链接属性,具有外部链接属性,使得函数在整个⼯程中只要适当的声明就可以被使⽤。但是被 static 修饰后变成了内部链接属性,使得函数只能在⾃⼰所在源⽂件内部使⽤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值