int *p 和int **p的区别

int *p:一级指针,表示p所指向的地址里面存放的是一个int类型的值

int **p:二级指针,表示p所指向的地址里面存放的是一个指向int类型的指针(即p指向的地址里面存放的是一个指向int的 一级指针)

例如:

int i = 10;//定义了一个整形变量

int *p = &i;//定义了一个指针指向这个变量

一级指针中各个参量含义的讲解

int a = 5;                // 声明变量a=5
int* pt = &a;             // 将a的地址存储到指针pt上
std::cout << pt << endl;  // 输出a的地址
std::cout << *pt;         // 输出a的值
其中&pt代表的是指针的地址

int **p1 = &p;//定义了一个二级指针指向p指针

那么取出10的值的方式为:

pritnf("i = [%d] ",*p);

printf("i = [%d] ",**p1);

从这个例子中我们可以看到,*p指向的地址是值10所在的地址,**p1所指向的地址是*p所在的地址。

取值的时候,就是*p里面存放的值是10

*p1代表的是*p的地址。**p1代表的是*p地址里面的值。

https://zhidao.baidu.com/question/418928979.html

p1:指针变量名
*p1:访问p1指向的变量
p2:二级指针变量【指向一级指针,保存的是一级指针变量的内存地址
*p2:获取一级指针的值【即一级指针指向的变量的内存地址
**p2:获取一级指针指向的变量的值
输出p2得到的是一级指针变量的地址
输出*p2得到的是一级指针变量指向的普通变量的地址
输出**p2得到的是一级指针变量指向的普通变量的值

原文地址:https://www.cnblogs.com/littleswan/p/12116449.html