这是周游C语言的第七篇教程,你将在这篇文章里认识函数。
函数函数就是一组代码,调用这个函数就会执行一遍函数中的代码。每个程序都至少有一个函数,既mian函数,程序都是从main函数开始执行。通常我们会将某些单一功能写成一个函数,方便我们后续程序的编写,同时也会是的程序更加简洁,提高可读性。C语言的标准库中提供了大量的标准函数,比如size_t strlen(const char *str),这个函数可以通过输入字符串得出字符串的长度。
定义函数返回类型 函数名(参数列表) { 函数体; return 返回值; }返回类型
一个函数可以有一个返回类型,意思是这个函数运行完成之后会返回这么一个类型的值,它的具体数值有函数体中return后面跟的数值决定。如果return的数和返回类型不同则会报错,需要强制转换数据类型。
如果不需要返回任何数据,那么可以将返回类型定义为空,既void。
函数名是给这个函数体定义的名字,在其他地方调用这个函数就需要使用这个函数名调用。
参数列表参数列表是给定的初始条件,根据不同的参数列表可以计算出不同的返回值。比如计算年收入,假定年收入由月工资和年终奖两部分组成,那么参数列表就应该是月工资和年终奖。
参数列表可以为空,表示没有需要指定的值。
函数体由一个{}包裹,调用一个函数就是调用这个函数体中内容。
returnreturn是一个函数结束的标志,当语句运行到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。可以看成下面的代码
#includeint main() { int out_num = 100; int num = out_num; num = 10; printf("%dn", out_num); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)