输入参数:承上启下的作用
调用者:函数名(要传递的数据) //实参
被调者:函数的具体实现
函数的返回值 函数名(接收的数据) //形参
{
。。。。
}
实参 传递给 形参
传递形式:逐一拷贝
值传递典型错误:
#include<stdio.h>
void swap(int a,int b)
{
int c;
c = a;
a = b;
b = c;
}
int main()
{
int a = 10;
int b = 20;
printf("the value of a is %d,b is %d\n",a,b);
swap(a,b);
printf("After swap,the value of a is %d,b is %d\n",a,b);
}
运行结果:
ubuntu@ubuntu-virtual-machine:~$ gcc -o swap swap.c
ubuntu@ubuntu-virtual-machine:~$ ./swap
the value of a is 10,b is 20
After swap,the value of a is 10,b is 20
解决办法:地址传递
地址传递用途:
1、上层(调用者)让下层(子函数)修改自己的空间值的方式;
2、类似结构体这样的空间,函数与函数之间调用关系。
#include<stdio.h>
void swap(int *a,int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
int main()
{
int a = 10;
int b = 20;
printf("the value of a is %d,b is %d\n",a,b);
swap(&a,&b);
printf("After swap,the value of a is %d,b is %d\n",a,b);
}
结果:
ubuntu@ubuntu-virtual-machine:~$ gcc -o swap swap.c
ubuntu@ubuntu-virtual-machine:~$ ./swap
the value of a is 10,b is 20
After swap,the value of a is 20,b is 10
连续空间的传递:数组、结构体
1、数组
数组名---标签
2、结构体
结构体变量:
struct abc{int a;int b;int c;};
struct abc buf;