第七章函数的定义
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//函数的基本概念
//函数的定义和函数返回值
//函数的定义 也相当于声明了
//void 表示函数没有函数返回值 无形参时就写() 里边啥也不写
void printhello(){//自定义函数 咱们自己写的
printf("hello,How are you\n");
}
//有返回值 有形式参数
int addtwoshu(int a,int b){//a b就叫形式参数 形式参数的目的表示有数据传递到本函数来,用这些参数接收传递进来的数据
int c = a + b;
return c; //return是返回值给调用者 一般是调用者会用赋值语句接收该值
}
int whichmax(int a,int b){
if(a>b){
return a;
}else{
return b;
}
}
int testf(){//如果你实际返回的类型 和 函数定义的返回值类型不同时,则系统会自动转换成函数返回值类型
return 3.45F;
//输出就会成为3; 转成int型
}
int main(int argc, char *argv[]) {
//main函数是整个程序的入口函数 称为主函数
//把自己写的函数放在main()函数前面 就可以解决先声明的问题
printhello(); //调用一个函数之前 必须先进性声明
printhello();
//a 一个文件里有一个或者多个函数 这个文件我们就称为源程序文件
//b 大项目中 源程序不能都放在一个文件里 行太多 所以一个C项目只有一个或者一个多个源文件组成
//这些个函数分别可以放到这些源程序文件里内并被所有源文件公用
//c C程序可以从main函数开始执行,最终也是从main函数中结束整个程序的运行
//d 函数不可嵌套就是说 函数里面不可以写函数
//函数之间可以互相调用 main函数除外 main函数是系统才可以调用 不要手动调用main
//函数大概分两类:
//库函数 printf() 可以直接使用 不需要我们自己定义 strcpy strcmp
//自定义函数 printhello() 用于解决我们自己的需求
//函数的定于和返回值
//函数的参数:就是 我调用函数时 希望把一些数据传递给该函数 该函数就需要用一些变量来接受数据
//接受数据的变量 就叫函数参数
//函数定义的一般形式:
//返回类型 函数名(形式参数列表) //记住这个函数 函数里边的参数叫形式参数 简称形参
//{
// ....
// 语句
// return 返回值;
//}
//a 无返回值类型 无形参 void printhello(){} 必须加void
//b 有参数有返回值
int a = addtwoshu(2,5); //2,5叫实际参数 简称:实参
//用赋值语句进行接收
printf("a:%d\n",a);
//return 0;
//函数定义的第一行是没有分号的
//形式参数在函数调用之前不分配内存 调用的时候分配内存 函数调用结束后,形式参数的内存都被释放了,所以形式参数只能在函数内部使用
//实际参数 可以是常量 可以是变量 可以是表达式:
int i = 5,j = 8;
a = addtwoshu(i,j);
printf("a:%d\n",a);
//如果实际参数和形式参数为数组名(数组名代表的是数组首地址)则传递进去的是数组首地址而不是变量值
//形参数量和实际参数数量应该是一样的 保持一致的
//C语言规定 实参变量 对形参变量的数据传递是 "值传递" 也就是单项传递 只由实参传递给形参 不可以由形参传给实参
int x = whichmax(3,7);
printf("max:%d",x);
//一遇到return 函数就会跳出,后面的语句将不会被执行
}