将两个已知整形变量的值交换
解题思路:
1>在最开始创建两个变量并初始化
2>再创建一个临时变量,用来交换最开始创建的变量
#define _CRT_SECURE_NO_WARINGS 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
//创建变量,变量放到前面
int a = 10;
int b = 20;
int tmp = 0; //交换变量,初始化
scanf_s("%d%d", &a, &b); //获取两个变量
printf("a = %d b = %d\n", a, b);
tmp = a;
a = b;
b = tmp;
printf("a = %d b = %d\n", a, b);
system("pause");
return 0;
}
应用函数实现两个数的交换
1>创建一个Swap函数,参数为a和b
2>函数内部创建一个临时变量tmp,用于交换两个数
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
//指针变量用来存放地址
void swap(int *px, int *py) //void 无返回类型
{
int tmp; //创建临时变量
tmp = *px;
*px = *py;
*py = tmp;
}
int main()
{
int a = 0;
int b = 0;
printf("请输入两个数\n");
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
swap(&a, &b);
printf("a = %d b = %d", a, b);
system("pause");
return 0;
}
a>形参是实参的临时拷贝,形参的改变不会影响实参。所以,函数传参时要注意需要传实参的地址(&),并用指针变量接收
b>地址传递——它把实参的存储地址传送给形参,使得形参指针和实参指针指向同一块地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参
代码分析:有了两行隐含赋值操作,可以清晰的看出指针 *px ,*py 是对变量 a, b 的值操作。函数里面对 a 和 b 的值进行了交换,即就是传址。