C语言回滚(三)-指针
#include <stdio.h>
#include <stdlib.h>
//& 地址运算符
//* 间接运算符
// *的作用 当*后面跟一个指针名或地址的时候,
// *给出储存在被指向地址中的数值
int change1(int x, int y);
//int change2(int *x, int *y);
int change2(int *, int *);
//C语言的简洁性允许这样定义
int main(){
int *p;
//定义了一个指针
//p是一个指针,*p是一个int类型的
//指针的用处
int m, n;
scanf_s("%d %d", &m, &n);
change2(&m, &n);
//传递了两个地址
//不同与传递数值;传递数值只是复制了该数据
//不能更改传入数据的值;只能更改复制后的数值
//指针是对原数据的更改
printf("%d %d", m, n);
system("pause");
return 0;
}
int change2(int *x, int *y){
int tmp;
tmp = *x;
//此时要用*x而不是x
//因为此时传入的是地址*x才是被指向的地址中的数值
*x = *y; //*x
*y = tmp;
}
int change1(int x, int y){
int tmp;
tmp = x;
x = y;
y = tmp;
// return x;
//因为只能返回一个值,所以单独使用兑换函数不能达到目的
//这时候就需要指针
}