第七章 函数
第一节 函数的基本概念和定义
1. 函数的基本概念
-
a) 一个文件里有有一个或多个函数组成,这个文件我们一般成为源程序
-
b) 大项目源程序不能都放一个文件里,所以一个c项目是由一个或多个源程序组成,这些函数可以分别放到这些源程序文件里并被所有的源程序文件共用
-
c) C程序从main函数开始执行,最终也是在main函数中结束整个程序的运行
-
d) 函数里不能套函数,但是函数之间可以互相调用,不要手工去调用main函数,这个是留给系统调用的
函数的分类
- a) 库函数:比如printf,直接使用,不要我们自己定义, strcpy …
- b) 自定义函数:是我们自己定义的函数,用于满足自己的需求
2. 函数的定义和函数返回值
函数的参数:调用函数的时候,需要把一些数据传递给函数,该函数就需要用一些变量常来接受这些数据,这些函数接收数据的变量,就叫参数
函数的一般形式: 返回类型 函数名(形式参数列表) //记住这个概念,函数里边的参数叫形式参数,形参
返回类新 函数名(形式参数列表){
......
语句
return 返回值
}
- 无返回类型的函数,无形参 void printhello(){…},无返回类型的函数,返回类型必须写成void
- 有参数,有返回值
#include <iostream>
// 函数的定义,也相当与声明了
// 自己定义的函数
void printhello() {
printf("Hi, welcome to Felaim's blog!\n");
}
// a,b就叫做形式参数,形式参数的目的表示有数据要传递到本函数来,用这些参数来接受这些传递过来的值
int sum_2(int a, int b) {
return (a + b);//用return返回值给调用者,一般调用者会用赋值语句来接收该值
}
int maxfunc(int a, int b) {
return a > b ? a : b;
}
int main() {
std::cout << "Hello, World!" << std::endl;//调用一个函数之前必须先声明
printhello();
int sum;
sum = sum_2(3, 5);//3, 5叫实际参数,简称实参
printf("function sum2 result: %d\n", sum);
int max = maxfunc(13, 5);
printf("function maxfunc result: %d\n", max);
return 0;
}
-
函数定义的第一行没有分号’;’
-
形式参数在函数调用之前并不分配内存,调用的时候分配内存,函数调用结束后,形式参数的内存就被释放了,所以形式参数只能再函数内部使用
-
实参可以是常量\变量\表达式
-
函数调用的时候,实参的值自动付给来形参,如果实际参数和形式参数为数组名(数组名代表的是数组首地址),则传递进去的是数组首地址而不是变量值
-
形参数量和类型与实参的数量和类型保持一致
-
c语言规定,实参变量对形参变量的数据传递是"值传递",也就是单项传递,只由实参传递给形参,不能由形参传递给实参
-
如果你实际返回的类型和函数定义的类型不同时,系统会自动转成函数返回类型值