函数分类,函数的参数,函数的调用

1.C语言中函数的的分类

1.库函数
2,自定义函数

2.什么是库函数,如何去查看库函数,常见的库函数

库函数:别人写好的经常会使用的函数
       eg:strlen/scanf/printf
推荐去:https://www.cplusplus.com查看库函数
C语言常用的库函数:IO函数,字符串操作函数,字符操作函数,内存操作函数,时间/日期函数,数学函数,其他库函数


eg:求x的n次方

#include<stdio.h>
#include<math.h>
int main()
{
    
    
	int x,y;
	scanf("%d %d", &x, &y);
	printf("%d\n",(int)pow(x, y));
	return 0;
}

在这里插入图片描述
在这里插入图片描述
:1.pow(x,n)其作用是计算x的n次方,x,n及函数值都是double型
       2.要加入头文件math.h

3.函数的参数(实参,形参)

实际参数(实参):真正传给函数的参数;实参可以省:常量,变量,表达式,函数等。无论实参是何种类型的量,在函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
形式参数(形参):是指函数名后括号中的变量,因为形参只在函数被调用的过程中才实例化(分配内存单元),所以才叫形式参数。形参当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。

4.函数的调用(传值调用,传址调用)

例题:将三个数有小到大排列
步骤:使用类似冒泡的思想把最大的值交换给c,把最小的值交换给a,然后输出a,b,c
错误做法(传值调用)

#include<stdio.h>
void swap(int x, int y)
{
    
    
	int tem = x;
	x = y;
	y = tem;
}
int main()
{
    
    
	int a, b, c;
	scanf_s("%d %d %d", &a, &b, &c);
	//使用类似冒泡的思想,把最大的给c
	if (a > b)
	{
    
    
		swap(a, b);
	}
	if (b > c)
	{
    
    
		swap(b, c);
	}
	//把最小的给a
	if (a > b)
	{
    
    
		swap(a, b);
	}
	printf("%d %d %d\n", a, b, c);
}

在这里插入图片描述
错误原因:实参a,b传递给形参x,y,x和y进行交换不会影响a,b,函数的形参和实参分别占用了不同的代码块,对形参的修改不会影响实参
在这里插入图片描述
在这里插入图片描述

正确做法(传址调用):

#include<stdio.h>
void swap(int* px, int* py)
{
    
    
	int tem = *px;
	*px = *py;
	*py = tem;
}
int main()
{
    
    
	int a, b, c;
	scanf_s("%d %d %d", &a, &b, &c);
	//把最大的给c
	if (a > b)
	{
    
    
		swap(&a, &b);
	}
	if (b > c)
	{
    
    
		swap(&b, &c);
	}
	//把最小的给a
	if (a > b)
	{
    
    
		swap(&a, &b);
	}
	printf("%d %d %d\n", a, b, c);
}

在这里插入图片描述
正确原因:这种做法是将a,b的地址传给x,y,形参x,y交换后就能通过地址找到对应的实参
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50886514/article/details/110539985