type *p 中的 p、*p 和 &p 到底是什么,那也就能够理解二级指针了。
拆分着看,其中 * 是取值符号,& 是取地址符号;然后就把 p 当作正常的变量看待
个人理解是不要把 *p 看成整体,看成是 *§ 更好理解。把 p 看成正常的变量名,那么 p 这里就表示这个变量的值;
#include <iostream>
using namespace std;
int main (){
int var;
int *ptr;
int **pptr;
var = 3000;
// 获取 var 的地址
ptr = &var;
// 使用运算符 & 获取 ptr 的地址
pptr = &ptr;
// 使用 pptr 获取值
cout << "var 值为 :" << var << endl;
cout << "&var 值为 :" << &var << endl;
cout << "*ptr 值为 :" << *ptr << endl;
cout << "ptr 值为 :" << ptr << endl;
cout << "&ptr 值为 :" << &ptr << endl;
cout << "**pptr 值为 :" << **pptr << endl;
cout << "*pptr 值为 :" << *pptr << endl;
cout << "pptr 值为:" << pptr << endl;
cout << "&pptr 值为:" << &pptr << endl;
return 0;
}
运算结果为:
var 值为 :3000
&var 值为 :0x61ff1c
*ptr 值为 :3000
ptr 值为 :0x61ff1c
&ptr 值为 :0x61ff18
**pptr 值为 :3000
*pptr 值为 :0x61ff1c
pptr 值为:0x61ff18
&pptr 值为:0x61ff14