C笔记(6)-函数

目录

一、函数概念

二、形参和实参

三、嵌套调用和链式访问

3.1 嵌套调用

3.2 链式访问

四、函数的声明和定义

4.1 声明

4.2 static 和 extern

4.2.1 static

4.2.2 extern


一、函数概念

C语⾔引⼊函数的概念,有些翻译为:⼦程序,⼦程序这种翻译更加准确⼀些。
C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码。
在C语⾔中我们⼀般会⻅到两类函数:库函数⾃定义函数。                                                ​​​​​​​        ​​​​​​​库函数相关头⽂件:https://zh.cppreference.com/w/c/header

二、形参和实参

函数的形式参数要和函数的实参个数匹配
函数的实参是数组,形参也是可以写成数组形式的
形参如果是⼀维数组,数组⼤⼩可以省略不写
形参如果是⼆维数组,⾏可以省略,但是列不能省略
数组传参,形参是不会创建新的数组的
形参操作的数组和实参的数组是同⼀个数组

三、嵌套调用和链式访问

3.1 嵌套调用

嵌套调⽤就是函数之间的互相调⽤
稍微⼤⼀些代码都是函数之间的嵌套调⽤,但是函数是不能嵌套定义

3.2 链式访问

链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来就是函数的链式访问

//⼀个有趣的代码

#include <stdio.h>
int main()
{
	printf("%d", printf("%d", printf("%d", 43)));
	return 0;
}

//printf函数返回的是打印在屏幕上的字符的个数。
//上⾯的例⼦中,我们就第⼀个printf打印的是第⼆个printf的返回值
// 第⼆个printf打印的是第三个printf的返回值。
//第三个printf打印43,在屏幕上打印2个字符,再返回2
//第⼆个printf打印2,在屏幕上打印1个字符,再放回1
//第⼀个printf打印1
//所以屏幕上最终打印:4321

四、函数的声明和定义

4.1 声明

#include <stdio.h>

int is_leap_year(int y);//函数声明

int main()
{
	int y = 0;
	scanf("%d", &y);

	int r = is_leap_year(y); //函数调用

	if (r == 1)
		printf("闰年\n");
	else
		printf("⾮闰年\n");
	return 0;
}

//函数定义
//判断⼀年是不是闰年
int is_leap_year(int y)
{
	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
		return 1;
	else
		return 0;
}

4.2 static 和 extern

static 和 extern 都是C语言中的关键字。                                                                                      static 是静态的意思,可用于修饰局部变量、全局变量、函数。extern 是用来声明外部符号的。

 作用域:局部变量的作⽤域是变量所在的局部范围。 全局变量的作⽤域是整个⼯程(项⽬)       ⽣命周期指的是变量的创建(申请内存)到变量的销毁(收回内存)之间的⼀个时间段。
1. 局部变量的⽣命周期是:进⼊作⽤域变量创建,⽣命周期开始,出作⽤域⽣命周期结束。
2. 全局变量的⽣命周期是:整个程序的⽣命周期。

4.2.1 static

  1. static修饰局部变量:改变了变量的生命周期,生命周期改变本质上是改变了变量的存储类型。局部变量本来存储在内存的栈区中,被static修饰后存储到了静态区,与全局变量生命周期一样长。  使用建议:某个变量出了函数后,还想保留值,等待下一次进入函数继续使用。

  2. static修饰全部变量:这个全局变量只能在本源文件内使用,不能在其它源文件中使用。    使用建议:一个全局变量,只想在所在的源文件内使用。

  3. static修饰函数:与修饰全局变量一样 

4.2.2 extern

exern是用来声明外部符号的。如果一个全局的负号在A文件中定义,想在B文件中使用,就可以使用extern进行声明再使用。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值