#include "stdafx.h"
#include <iostream>
using namespace std;
int a = 1, b = 2;
void change0(int *x)
{
x = &b;
}
void change3(int *x)//让x指向原始值,
{
*x = b;//直接改变指针所指向的额值,原始值也发生了改变
}
void change1(int x)
{
x = b;//在此作用域赋值,不作用于作用域外
}
void change2(int **x)
{
*x = &b;//改变*X的指向,使其指向b
}
void main()
{
int c = 1;
int *p = &a;
change1(c);//形参拷贝c的值,子函数结束时并没有将c的值改变
cout << c << endl;
change3(p);//改变了指针指向,是原来的数值发生变化
cout << *p << endl;
change0(p);//只是形参复制该指针,change0(*x)结束时并没有改变原始p的值
cout << *p << endl;
change2(&p);//改变了指针指向,是原来的数值发生变化
cout << *p << endl;
system("pause");
}
![](https://i-blog.csdnimg.cn/blog_migrate/f1cdde7b436ad4b68b6c99957c1421e0.png)