周游C语言教程7 - 函数

周游C语言教程7 - 函数,第1张

周游C语言教程7 - 函数 周游C语言教程7 - 函数

这是周游C语言的第七篇教程,你将在这篇文章里认识函数。

函数

函数就是一组代码,调用这个函数就会执行一遍函数中的代码。每个程序都至少有一个函数,既mian函数,程序都是从main函数开始执行。通常我们会将某些单一功能写成一个函数,方便我们后续程序的编写,同时也会是的程序更加简洁,提高可读性。C语言的标准库中提供了大量的标准函数,比如size_t strlen(const char *str),这个函数可以通过输入字符串得出字符串的长度。

定义函数
返回类型 函数名(参数列表)
{
	函数体;
	return 返回值;
}
返回类型

一个函数可以有一个返回类型,意思是这个函数运行完成之后会返回这么一个类型的值,它的具体数值有函数体中return后面跟的数值决定。如果return的数和返回类型不同则会报错,需要强制转换数据类型。

如果不需要返回任何数据,那么可以将返回类型定义为空,既void。

函数名

函数名是给这个函数体定义的名字,在其他地方调用这个函数就需要使用这个函数名调用。

参数列表

参数列表是给定的初始条件,根据不同的参数列表可以计算出不同的返回值。比如计算年收入,假定年收入由月工资和年终奖两部分组成,那么参数列表就应该是月工资和年终奖。

参数列表可以为空,表示没有需要指定的值。

函数体

函数体由一个{}包裹,调用一个函数就是调用这个函数体中内容。

return

return是一个函数结束的标志,当语句运行到return处时就会退出当前函数,无论下方是否还有程序语句。如果返回类型不为空,那么return后面必须跟随一个值,这个值就是调用该函数之后得到的值。如果返回类型为空,那么return将单独出现,或者无论如何函数中的所有语句都必须执行完,return也可以省略(仅限返回类型为空)。

int cal_money(int salary,int yearEndBonus)
{
	int allMoney = 0;
	allMoney = 12*salary+yearEndBonus;
	return allMoney ;
}
函数声明

函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
函数声明中的参数名称可以省略,但是参数类型必须定义。比如上述代码可以使用如下声明

int cal_money(int salary,int yearEndBonus);

也可以

int cal_money(int ,int );

如果在调用函数之前没用定义函数或者声明函数,那么编译器将会报错。

函数调用

调用函数之前请确保函数已经被定义或者已经被声明,掉用需要使用函数名并且给定参数列表的参数。

#include 

// 声明函数
int cal_money(int salary, int yearEndBonus);

int main()
{
	int money = 0;
	int salary_t = 8000;
	int yearEndBonus_t = 10000;

	// 参数列表直接给常量
	money = cal_money(8000, 10000);
	printf("今年赚了%d元n",money);

	// 参数列表给变量
	money = cal_money(salary_t, yearEndBonus_t);
	printf("今年赚了%d元n", money);
}

int cal_money(int salary, int yearEndBonus)
{
	int allMoney = 0;
	allMoney = 12 * salary + yearEndBonus;
	return allMoney;
}
注意

定义函数时,如果存在参数列表,那么就必须定义对应的参数变量,这些变量被称为形式变量,他们将在函数调用时被创建,在函数退出时被销毁。参考下方代码

#include 

// 声明函数
void change_num(int num);

int main()
{
	int out_num = 100;
	change_num(out_num);
	printf("%dn", out_num);

}
void change_num(int num)
{
	num = 10;
}

我们的本意是把所有输入函数的参数都变成10,但是运行程序发现最后num的值任然为100。这是因为函数调用时创建了一个变量num,程序将自动把out_num的值赋值给num,而程序运行完成,num被销毁,out_num任然是那个out_num。可以看成下面的代码

#include 
int main()
{
	int out_num = 100;
	int num = out_num;
	num = 10;
	printf("%dn", out_num);

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存