#include<stdio.h>
int main
{
//对一个表达式加* , 就会对表达式减一级星花*,
//如果对表达式取&, 就会加一级*
int* p;
int** q;
q = &p //这个等式是成立的,因为q是**类型看, p是*类型, 加上&, 就变成了**。(如果对表达式取*, 就会加一个*)
*q = p//这个表达式也是成立的, q本来是**类型,现在加上*, 就会对表示式减少一级*, 就变成了*类型, 所以*q = p的
}
#include<stdio.h>
int main()
{
int a = 10;
int* p = &a;
//定义一个指针保存p的地址,指针变量的地址
int** q = &p;
//通过q把a的值取出来
printf("**q is %d\n",**q);// *q表示把q里面的内容取出来,当做地址看到, 并找到改地址的空间里面的内容,即找到了&a,*(*q)== *(&a)表示找到a地址空间里面的内容,就是10
return 0;
}
![]()
![]()
#include<stdio.h>
int main()
{
int a = 10;
int* p = &a;
//定义一个指针保存p的地址,指针变量的地址
int** q = &p;
//通过q把a的值取出来
printf("**q is %d\n",**q);// *q表示把q里面的内容取出来,当做地址看到, 并找到改地址的空间里面的内容,即找到了&a,*(*q)== *(&a)表示找到a地址空间里面的内容,就是10
//定义一个地址变量, 报错q的地址
int*** k = &q;//每取一次地址就多加一个*
printf("***k is %d \n",***k);
return 0;
}
*符号结合, 代表这个k是一个指针变量
k是一个变量
k的类型:将变量k拖黑(选中), 剩下的就是表示变量k的类型
k用来保存谁的地址, 将变量k和k最近的*一起拖黑选中,剩下的是什么类型, 就表示k保存的是什么类型数据的地址