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得到的是一级指针变量指向的普通变量的值