指针*p **p ***p的理解

指针*p **p ***p的含义

首先要理解指针 *p在左右不同的区别和如何定义指针类型:

例如:

int a;//假设a的地址为0xffff
a=10int *p=&a;

这里在左边的*p表示指针,记录的是数据a的地址。例如0xffff。

int a = 10;
int b = 20;
int *p = &a;

*p = 30;
b = *p;

这时候 p 指向了合法的地址 &a; *p = 30 就可以改变 a 的存储单元的值了,b = *p 是把 p指向内存单元(&a)现在的值(30)取出来给 b
总结上面:等号左边表示 要修改指针指向内存单元的值;等号右边表示 取出指针所指向内存单元的值

int c;
int*p=c;

char d;
char *p=d;

当定义指针时,定义的指针类型应当于被指向数据类型保持一致。如果被指向类型为int类型,那么定义的指针应当为int类型,如果被定义类型为char类型,那么定义的指针应当为char类型。

那么接下来就比较好理解了

int a=10//a的地址是0xffff
int *p=&a;//*p的地址是0xfff9
int**p1=&p;
int**p2=*p;

这里 * p 在左边,即表示指针,记录的是a的地址0xffff,同时*p本身也有自己的地址0xfff9,此时我们int**p1可以理解为int * 和 *p1 前面的 *表示为指针,指向类型为 *p类型,所以 **p内容为 *p的地址0xfff9。
**p2指向 *p的内容,所以 **p2内容是 *p指向内容里保存的内容,即a的数值10;
同理 ***p是指向 **p的一个指针,其余以此类推。

猜你喜欢

转载自blog.csdn.net/weixin_47226247/article/details/112798202
p
今日推荐