C语言函数基本知识总结
目录
1.函数的分类
2.函数的调用
1.传值调用和传址调用
2.嵌套调用和递归调用
1.嵌套调用
2.递归调用
3.内部函数与外部函数
4.函数的定义和声明
1.函数的定义
2.函数的声明
1.函数的分类
从使用者的观点分为 : − C 编译系统提供的标准库函数 − 用户自定义函数; 从函数间数据传送的有无分为 : − 有参函数、无参函数 − 有返回值函数、无返回值函数; 从函数的调用分为 : − 内部函数和外部函数。2.函数的调用
1.传值调用和传址调用
我们在某些情况下对变量进行传值调用
eg.我们要实现一个比较两个数大小的函数
int Max(int x, int y)
{if (x > y)return x;//注意返回elsereturn y;//注意返回
}
int main()
{int a;int b;scanf("%d%d", &a, &b);int c = Max(a, b);printf("\n%d", c);return 0;
}
但在另一些情况下我们传值调用无法实现我们的目的,例如需要返回的值有两个或多个,这时候我们考虑传址调用
eg.我们要实现一个交换两个数大小的函数
void Exc(int* px, int* py)//接收地址
{int tmp=*px;//用指针变量修改a和b*px =*py;*py = tmp;
}
int main()
{int a;int b;scanf("%d%d", &a, &b);Exc(&a,&b);//将地址输入函数printf("a=%d b=%d", a, b);return 0;
}
2.嵌套调用和递归调用
1.嵌套调用
函数的嵌套调用是指在调用一个函数的过程中,该函数又调用另一个函数。在C 语言中 , 各函数均处于平等关系,任何一个函数都可以调用和被调用 , 但 main例外,main函数总是最先被调用 eg.打印两个数中较大的数int Max(int x, int y)
{return x > y ? x : y;
}
int main()
{int a, b;scanf("%d%d", &a, &b);printf("%d", Max(a, b));return 0;
}
2.递归调用
函数的递归调用是指在一个函数调用过程中又直接或间接调用自己, 这样的函数称为递归函数。
eg.求一个数的阶乘
int Fir(int x)
{return x > 2 ? Fir(x - 1)*x : x;
}
int main()
{int a;scanf("%d", &a);printf("%d",Fir(a));return 0;
}
3.内部函数与外部函数
只能被本文件中的其他函数所调用的函数称为内部函数。 格式:static 函数类型 函数名(形参)
内部函数也称静态函数 内部函数不能被其他文件中的函数使用, 所以在不同文件中可以使用相同名字的内部函数。 在一个文件内定义的函数, 也可以被其他文件内的函数调用, 这样的的函数称为外部函数。 格式:extern 函数类型 函数名(形参)
说明: 在C 语言中 , 函数前如果无关键字 extern , 隐含为外部函数。 在调用它的其他文件中, 用 extern加函数原型来声明所用的函数是外部函数。4.函数的定义和声明
1.函数的定义
我们通常在源文件中进行函数的定义
形式 :函数类型 函数名(参数表)
参数说明
{
数据说明
执行语句
}
eg.
void Displayboard(char arr[ROW][COL], int row, int col)
{int i, j;for (i = 0; i < row; i++){for (j = 0; j < col; j++){printf(" %c ", arr[i][j]);if (j < col - 1)printf("|");}printf("\n");if (i < row - 1){for (j = 0; j < col; j++){printf("---");if (j < col - 1)printf("|");}printf("\n");}}
}
2.函数的声明
我们通常在头文件中进行函数的声明
形式:
函数类型 函数名(参数表)分号
eg.
void Displayboard(char arr[ROW][COL], int row, int col);
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
