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;//注意返回
	else
		return 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);

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值