int *****p怎么理解?

题目要求输出*****p为某值... 题目要求输出*****p为某值 展开
 我来答
itunes0004
2020-11-13 · TA获得超过4045个赞
知道大有可为答主
回答量:2685
采纳率:69%
帮助的人:523万
展开全部

int *****p是一个五级指针,指向一个int ****q四级指针。

int *****q是一个四级指针,指向一个int ***r三级指针。

int ***r是一个三级指针,指向一个int **s二级指针。

int **s是一个二级指针,指向一个int *t一个整数指针。

int *t是一个指针,指向一个int i整数。

int i = 0; 假设i存储在地址400

int *t = &i; 那么t的值是400,表示指向400这个地址的一个整数。 t本身存储在地址,假设是1024。

int **s = &t; 那么s的值是1024,指向地址 1024的内容,内容被解释为普通指针。 

int ***r = &s; 依次类推。

int ****q = &r;

int *****p = &q; 


示例代码

#include <stdio.h>

int main()

{

int i = 0;

printf("变量 i 的值为 %d\t 存储在 %p\n", i, &i);

int *t = &i;

printf("变量 t 的值为 %lx\t 存储在 %p\n", t, &t);

int **s = &t;

printf("变量 s 的值为 %lx\t 存储在 %p\n", s, &s);

int ***r = &s;

printf("变量 r 的值为 %lx\t 存储在 %p\n", r, &r);

int ****q = &r;

printf("变量 q 的值为 %lx\t 存储在 %p\n", q, &q);

int *****p = &q;

printf("变量 p 的值为 %lx\t 存储在 %p\n", p, &p);

return 0;

}


结果: 需要注意的是,我这里用了int,我测试在64位系统上,所以你看到地址(64位),所以输出存储的地址本身也需要用长整数。

变量 i 的值为 0  存储在 0x7ffc2480b004

变量 t 的值为 7ffc2480b004       存储在 0x7ffc2480b008

变量 s 的值为 7ffc2480b008       存储在 0x7ffc2480b010

变量 r 的值为 7ffc2480b010       存储在 0x7ffc2480b018

变量 q 的值为 7ffc2480b018       存储在 0x7ffc2480b020

变量 p 的值为 7ffc2480b020       存储在 0x7ffc2480b028 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式