首先几个概念:
一级指针:
int a;
int *p;
p = &a;
&p//指针所在内存的地址
p//指针p的值,也就是所指向内存区的地址(a的地址)
*p//p所指向内存区内的值(a的值)
二级指针:
int **q;
q = &p//q指向一个指针
&q//指针q所在内存区的地址
q//指针q的值,也就是p所在内存区的地址,等同于&p
*q//指针q所指向内存的值,也即是指针p的值,等同于p(a的地址)
**q//a的值
那为什么非要引入二级指针呢
先看一个例子:
#include<iostream>
using namespace std;
int a = 2, b = 3;
int * q;
void fun(int *p)
{
p = &a