这里首先我们来看一段代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void change(int j)
{
j = 5;
}
int main()
{
int i = 10;
printf("before change i=%d\n", i);
change(i);
printf("after change i=%d\n", i);
return 0;
}
运行结果如下:
可以看到i的值依旧是10,没有交换成功,这是因为c语言函数的传递是值传递,我们可以用指针来改变此现状,用指针代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void change(int *j)//用指针接受传过来的地址
{
*j = 5;//解引用
}
int main()
{
//int i = 5;
//int* p = &i;//p就是一个指针变量,p可以用来存储地址,类型是整型指针,这里的*不是解引用
//printf("%d\n", i);//直接访问
//printf("*p=%d\n", *p);//间接访问也就是解引用,这里的*代表解引用。*p:通过p存储的地址找到它所对应的内容,即5
int i = 10;
printf("before change i=%d\n", i);
change(&i);//传递的是i的地址
printf("after change i=%d\n", i);
return 0;
}
运行结果如下:
添加指针后就能交换成功了。