鱼C论坛

 找回密码
 立即注册
查看: 1577|回复: 5

[已解决]关于指针指向的问题

[复制链接]
发表于 2019-12-23 16:32:49 | 显示全部楼层 |阅读模式
7鱼币
#include<stdio.h>

int main()
{
        char array[10] = "jishipeng";
       
        char (*p)[10] = &array;
       
        printf("&array of address is %p\n",&array);
        printf("&p of address is %p\n",&p);
        printf("p of address is %p\n",p);
       
        printf("%s",p);
       
        return 0;
}//p的地址为什么会和&p的不一样?
最佳答案
2019-12-23 16:32:50
本帖最后由 sunrise085 于 2019-12-23 17:07 编辑

&p输出的是*p的地址,即存放指针p的单元的地址;而p输出的是*p指向的单元的地址
图.jpg
91223163230.png

最佳答案

查看完整内容

&p输出的是*p的地址,即存放指针p的单元的地址;而p输出的是*p指向的单元的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-23 16:32:50 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2019-12-23 17:07 编辑

&p输出的是*p的地址,即存放指针p的单元的地址;而p输出的是*p指向的单元的地址
图.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-23 16:44:43 | 显示全部楼层
&p的地址为存放指针p的地址
p的地址为其指向的数组的存放地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-23 16:57:18 | 显示全部楼层
&p可以说是存放p的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-23 17:51:22 | 显示全部楼层
       不要把指针神秘化,p 是一个指针,在 main() 函数中 p 与 array[] 一样,同属于局部变量,都需要从堆栈中获取存储空间,array 占用的是 10 个 int 单元,共计 40 个字节,p 占用的是 1 个指针单元,对于 32 位的程序而言,p 占用 4 个字节,对于 64 位的程序而言,p 占用的是 8 个字节。p 中存储着 array 的内存地址,但是 p 本身作为一个变量,也有自己的内存地址,这不是很正常吗?

  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-23 22:06:00 | 显示全部楼层
jackz007 发表于 2019-12-23 17:51
不要把指针神秘化,p 是一个指针,在 main() 函数中 p 与 array[] 一样,同属于局部变量,都需要从 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 11:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表