第五章函数
1、为什么使用函数:1 避免代码冗长 2模块化的设计思路 3按功能划分
2、函数要先定义再使用 ,函数三要素: 函数名、参数列表、返回值
3、传递参数传递的是值,常量也可,数组作为参数传递的是数组的首地址可以写作
void func(int array【】)、void func(int array【】【3】)
数组传递,在函数中的sizeof(array)==8;因为传递的是首地址,形参中不存在数组的概念,即使括号中包含了数组的大小也没有意义,在os中用8个字节表示一个地址
4、取大值: x>y?x:y 可以直接return x>y?x:y;
#include<stdio.h>
int main(){
int getmax(int d1,int d2,int d3,int d4);
int d1,d2,d3,d4,max;
puts("输入四个数字: ");
scanf("%d%d%d%d",&d1,&d2,&d3,&d4);
max=getmax(d1,d2,d3,d4);
printf("最大的数是:%d",max);
return 0;
}
int getmax(int d1,int d2,int d3,int d4){
int getbig(int a,int b);
int m;
m=getbig(d1,d2);
m=getbig(m,d3);
m=getbig(m,d4);
return m;
}
int getbig(int a,int b){
return a>b?a:b;
}
函数可以当做表达式,用的是它的返回值,函数也可以调用当做其他函数调用的参数
5、unsigned int 能表示的正数范围更大,因为是从0开始的,int是从负数开始表示的
6、exit(-1);可以直接结束某函数,但是要加#include<stdlib。h>头文件
7、局部变量 只在所处的函数内有用,函数的局部变量在调用函数是分配内存,调用结束释放内存
8、外部变量:在函数外定义的变量,之后在定义位置以后的函数可以调用,全局变量:定义在开头的外部变量
9、递归求阶乘(工作用处不多)
#include<stdio.h>
int main(){
int jiecheng(int n);
int n,j;
puts("输入想求多少的阶乘:");
scanf("%d",&n);
j=jiecheng(n);
printf("%d的阶乘为:%d",n,j);
return 0;
}
int jiecheng(int n){
int j;
if(n==1){
j=1;
}else{
j=jiecheng(n-1)*n;}
return j;
}
10、函数作业:输入十个数,求最大数以及最大数的下标
#include<stdio.h>
int maxi;
void initarray(int array[],int len){
for(int i=0;i<len;i++){
printf("输入第%d个数:\n",i+1);
scanf("%d",&array[i]);
}
}
int getmax(int array[],int len){
int max;
max=array[0];
for(int i=0;i<len;i++){
if(max<array[i]){
max=array[i];
maxi=i;
}
}
return max;
}
int main(){
int array[10];
int len=sizeof(array)/sizeof(array[0]);
initarray(array,len);
printf("最大的数为:%d,最大数的下标为:%d",getmax(array,len),maxi);
return 0;
}