前言:
本文承接上文,将详细讲解指针概念。
一,通过指针了解变量的数值。
在将变量地址存入指针后,从指针反推也可以知道原变量的值,若想进行反退,就需要使用间接引用运算符:*。
语法:
*指针名;
使用该运算符,就可以知道指针中存储地址对应的变量的值。
例如:
# include <iostream>
using namespace std;
# include <iostream>
using namespace std;int main(){int a = 5;int *pA = &a;cout << "变量a的值是:"<<a << endl;cout << "变量a的地址是:"<<&a << endl;cout << "指针pA的值是:"<< pA<< endl;cout << "指针pA指向的值是:"<< *pA<< endl;return 0;
}
运行结果如下:
简而言之,可以通过间接引用运算符*,得到指针所指向变量的值。
二,知识点总结。
结合上一篇文章的知识点,可以得出以下结论:
a;//定义变量a。
&a;//变量a的地址
pA;//存储变量a地址的指针pA
*pA;//存储变量a地址的指针(pA)的所指向变量——a的值
在同时声明多个指针时,可以使用如下方式编写:
int *pA;int *pB;int *pC;
int *pA , *pB, *pC;
三,在指针中代入其他地址。
指针就是存储地址的变量,因为C++代码时逐行运行的,因此可以将统一指针多次赋值。
例如:
# include <iostream>
using namespace std;int main(){int a, b;//定义两个变量int *pA ;//定义一个指针变量a = 10;//给变量a赋值b = 20;//给变量b赋值pA = &a;//将变量a的地址赋值给指针pAcout << "变量a的值是:"<<a << endl;//输出变量a的值cout << "变量a的地址是:"<<&a << endl;//输出变量a的地址cout << "指针pA的值是:"<< pA<< endl;//输出指针pA的值cout << "指针pA指向的值是:"<< *pA<< endl;//输出指针pA指向的值pA = &b;//将变量b的地址赋值给指针pAcout << "变量b的值是:"<<b<< endl;//输出变量b的值——变量b的值cout << "变量b的地址是:"<<&b<< endl;//输出变量b的地址——变量b的地址cout << "指针pA的值是:"<< pA<< endl;//输出指针pA的值——变量b的地址cout << "指针pA指向的值是:"<< *pA<< endl;//输出指针pA指向的值——变量b的值return 0;
}
运行结果为:
在指针中带入其他变量地址能够改变指针值。
四,使用指针改变变量。
在上文中,可以知道,*pA的值就是变量的值,可以通过更改*pA的值来改变。
例如:
# include <iostream>
using namespace std;int main(){int a;//定义变量aint*pA;//定义指针pAa=2;//赋值pA=&a;//将a的地址赋给指针pAcout<<*pA<<endl;//输出指针pA所指向的值*pA=3;//通过指针pA修改a的值cout<<a<<endl;//输出a的值return 0;
}
运行结果为: