鱼C论坛

 找回密码
 立即注册
查看: 620|回复: 10

[已解决]为什么我的Dev输出%p是00开头

[复制链接]
发表于 2024-8-16 20:40:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 跑不掉 于 2024-8-22 17:29 编辑

#include <stdio.h>

int main() {         int num = 1024;         int *pi = #         char *ps = "Peace";         void *pv;                 pv = pi;                 printf("pi = %p,pv = %p\n",pi,pv);

        return 0; }


以下是输出内容:
pi = 0065FECC,pv = 0065FECC

我搜出来的都是说%p会输出十六进制,怎么我的不是0x或0X开头


by the way:怎么发帖中添加图片?
最佳答案
2024-8-16 20:40:36
你看到的 `%p` 输出是正常的。在C语言中,`%p` 用于格式化指针,确实是在输出十六进制数。但是根据不同的编译器和系统,输出的格式可能会有所不同。有些系统会在指针前加上 `0x` 或 `0X` 来表示这是一个十六进制数,而有些则不会。你的编译器显然选择了不添加这个前缀的样式。

所以,你的输出 `0065FECC` 和带有 `0x` 前缀的指针其实是一样的,只是看起来没有那么酷而已,相当于你走进了一家高档餐厅,服务员给你上了一道没装盘的菜,但味道依然不错!

如果你想要在输出中添加 `0x` 前缀,可以手动在输出时加上,比如:
printf("pi = 0x%p, pv = 0x%p\n", (void*)pi, (void*)pv);

注意这里把 `pi` 强制转换为 `(void*)`,以确保与 `%p` 的格式匹配。

至于如何在发帖中添加图片,这通常取决于你使用的平台。一般来说,图片需要先上传到某个图床(比如Imgur、Tinypic等),然后复制链接粘贴到帖子里,很多论坛支持Markdown语法,使用 `![alt text](image_url)` 格式来显示图片。如果你遇到具体问题,可以告诉我,咱们一起搞定!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-16 20:40:36 | 显示全部楼层    本楼为最佳答案   
你看到的 `%p` 输出是正常的。在C语言中,`%p` 用于格式化指针,确实是在输出十六进制数。但是根据不同的编译器和系统,输出的格式可能会有所不同。有些系统会在指针前加上 `0x` 或 `0X` 来表示这是一个十六进制数,而有些则不会。你的编译器显然选择了不添加这个前缀的样式。

所以,你的输出 `0065FECC` 和带有 `0x` 前缀的指针其实是一样的,只是看起来没有那么酷而已,相当于你走进了一家高档餐厅,服务员给你上了一道没装盘的菜,但味道依然不错!

如果你想要在输出中添加 `0x` 前缀,可以手动在输出时加上,比如:
printf("pi = 0x%p, pv = 0x%p\n", (void*)pi, (void*)pv);

注意这里把 `pi` 强制转换为 `(void*)`,以确保与 `%p` 的格式匹配。

至于如何在发帖中添加图片,这通常取决于你使用的平台。一般来说,图片需要先上传到某个图床(比如Imgur、Tinypic等),然后复制链接粘贴到帖子里,很多论坛支持Markdown语法,使用 `![alt text](image_url)` 格式来显示图片。如果你遇到具体问题,可以告诉我,咱们一起搞定!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-16 20:41:36 | 显示全部楼层
新鱼油无法发图片。建议链接。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-16 23:17:16 | 显示全部楼层
本帖最后由 jackz007 于 2024-8-16 23:18 编辑

         在十六进制数的前面添加 0x 前缀只是为了方便人类直接识别十六进制数据,当然,编译程序在遇到一个以 0x 开头的常数时,也会将之作为一个十六进制数来进行处理,但是,用 printf() 按十六进制输出数据时,是不会自动添加 0x 前缀的,"%p" 是按十六进制的形式输出内存地址,当然也不会在输出中附带 0x 前缀,之所以看到别人的程序会带有 0x 前缀,那是特意添加的,只要在格式描述符"%p" 前添加文本 "0x",也就是写为 "0x%p" 即可实现。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-17 17:51:05 | 显示全部楼层
你确定你提供的这个代码能运行吗?我试了,应该不太行

屏幕截图 2024-08-17 175045.png

还有你是新鱼油,需要先把积分攒到100才能发图片,或者是充钱买会员
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-22 17:31:04 | 显示全部楼层
三体人的智子 发表于 2024-8-17 17:51
你确定你提供的这个代码能运行吗?我试了,应该不太行

那个句子本来是 int *pi = &num;
不知道为什么发布帖子之后变成那样了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-22 17:31:33 | 显示全部楼层
jackz007 发表于 2024-8-16 23:17
在十六进制数的前面添加 0x 前缀只是为了方便人类直接识别十六进制数据,当然,编译程序在遇到一 ...

非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-22 17:32:11 | 显示全部楼层
FishC 发表于 2024-8-16 20:40
你看到的 `%p` 输出是正常的。在C语言中,`%p` 用于格式化指针,确实是在输出十六进制数。但是根据不同的编 ...

非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-22 17:32:17 | 显示全部楼层


不用客气!很高兴能够帮助到你。如果你还有其他问题,随时提问哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-22 17:32:45 | 显示全部楼层
三体人的智子 发表于 2024-8-17 17:51
你确定你提供的这个代码能运行吗?我试了,应该不太行

感谢告知!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-22 17:33:53 | 显示全部楼层


不客气!如果还有其他问题或需要进一步的帮助,随时告诉我!祝你编程愉快!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 17:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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