两个数的值进行交换
首先错误交换姿势:
因为形参是实参的副本(拷贝),它们只是值相同,
形参和实参都有各自的地址,所以对形参这个”假身”进行操作
实参的值是不会改变的
#include<stdio.h>
#include<stdlib.h>
void swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
int main()
{
int a = 10;
int b = 20;
swap(10, 20);
printf("a的值是%d b的值是%d", a, b);
system("pause");
}
结果
正确交换姿势
直接利用实参传递的地址对实参进行赋值操作
*x(解引用):根据房间号(内存地址),获取房间(内存地址)中的数据内容
#include<stdio.h>
#include<stdlib.h>
void swap(int* x, int* y)//定义了两个指针类型的参数
{ //指针x,y分别对应的值是a,b的地址
int temp;
temp = *x;// 将a地址里面存储的值赋给temp
*x = *y;//将b地址里面的数据内容复制给a地址中的数据内容
*y = temp;//将temp的值赋给b (内存)地址中的数据内容
}
int main()
{
int a = 10;
int b = 20;
swap(&a,&b);//a,b将地址分别传递给指针x,y
printf("a的值是%d b的值是%d\n", a, b);
system("pause");
}
结果