* p 、 p 、 &p是一个什么关系?

来源:1-1 C语言中的指针基础

慕后端9087467

2022-08-24 09:25:40

https://img.mukewang.com/climg/63057d2b09c84b7515810818.jpg

课件里面的 int* p p &p是一个什么关系?

*p指向&data 把*p改成88后 图上对应的p里面的指向变成了0x8000 但是&p不是指向的是p的地址么

为何&p的地址还是原来的0x9000,这个有点不太理解

写回答

2回答

大白老师

2022-08-24

首先需要理解 指针;
int  *p;    
p是一个指针变量,变量就需要申请内存空间。0x9000是p自己本身的地址,用&p表示。
就和int  a = 10.  a也是一个整形变量,自己也有一个本身的地址&a

上述a和p唯一的区别是保存的内容不同, a保存的是整数,p保存的是地址。
所以a保存了10,p保存了0x8000这个地址。

*的规定:  * + 地址 访问地址中的内容。
p<=====>0x8000
&p<====>0x9000
*p等价于*0x8000,访问0x8000中的内容就是10 【后期被改为了88】。
*(&p)等价于*0x9000,访问0x9000中的内容就是0x8000.

2

山行老师

2022-08-24

如果把指针变量p相当于一个抽屉,
&p就相当于过得抽屉的编号;
p就相当于获取抽屉里的内容(也就是另一个抽屉的编号);
p=88只是改变了抽屉放的编号,抽屉本身编号是不可更改的。
1

物联网/嵌入式工程师

面向零基础保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!

394 学习 · 1207 问题

查看课程