一.C语言中的函数的分类
1.库函数
简单总结,C语言中常用的库函数都有:
*i o函数*
*字符串操作函数*
*字符操作函数*
*内存操作函数*
*时间/日期函数*
*数学函数*
*其他库函数*
2.自定义函数
自定义函数和库函数一样,有函数名,返回值类型和函数参数,当时需要自己来设计
ret_type fun_name(paral,*)
{
statement//语句项
}
ret_type 返回类型
fun_name 函数名
parpal 函数参数
”{}“里面的内容称为函数体。
二.写一个函数可以交换整型变量的内容
#include<stdio.h>
int swap(int x, int y)
{
int z = x;
x = y;
y = z;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:a=%d,b=%d", a, b);
swap(&a, &b);
printf("交换后:a=%d,b=%d", a, b);
return 0;
}
倘若代码写成这样,会发现两个数字并不会发生交换,程序有bug。main()函数中的a,b为实际参数,而swap()函数中的x,y为形式参数。当实际参数传递给形式参数的时候,形式参数是实际参数的一份临时拷贝,对形式参数的修改不会影响实际参数。
#include<stdio.h>
void swap2(int* pa, int* pb)
{
int z = *pa;
*pa = *pb;
*pb = z;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:a=%d,b=%d\n", a, b);
//swap(&a, &b);
swap2(&a, &b);
printf("交换后:a=%d,b=%d\n", a, b);
return 0;
}
代码修改过后就可以实现整型数据的转换了。在这里补充一下
实际参数(实参)
真实传递给函数的参数,叫实参。
实参可以是:常量,变量,表达式,函数等。
无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
形式参数(形参)
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才会实例化(分配内存单元),所以叫形式参数。形式参数当函数调用后就自动销毁了。因此形式参数只有在函数中有效。
函数的调用形式:传值调用 传址调用
传值调用
函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。
传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接作函数外部的变量。
数组在传递参数的时候,传递的不是整个数组,传递的是数组首元素的地址
函数的嵌套使用和链式访问
函数可以嵌套使用,但不可以嵌套定义
链式访问:把一个函数的返回值作为另外一个函数的参数