鱼C论坛

 找回密码
 立即注册
查看: 1595|回复: 6

[已解决]16進制指標變數打印問題

[复制链接]
发表于 2022-5-27 09:29:39 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
        int x = 200;
        int *y;
        y = &x;
    printf("%-p \n", &x);
    printf("%-p \n", y);
    printf("%d \n", *y);
    return 0;
}

打印
000000000062FE14
000000000062FE14
200
為什麼前面會有0?(因為是16進制? 雖然是剛好16位...
前面的0有什麼方法可以刪掉嗎?
最佳答案
2022-5-27 09:43:37
一隻太平洋睡鯊 发表于 2022-5-27 09:39
啊,是這樣嗎
因為教材裡面前面沒有0
每台電腦都是有16位嗎?

      要去掉前导 0 ,把 printf() 里指针的格式描述符 “%-p” 换成 "%-x"  试试看呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-27 09:36:59 | 显示全部楼层
本帖最后由 jackz007 于 2022-5-27 09:41 编辑

        为什么要去掉前导 0?那是有意义的,代表完整的内存地址,可以防止出错。
        这2句
        printf("%-p \n", &x);
        printf("%-p \n", y);  
        改成这样
        printf("%-x \n", &x);
        printf("%-x \n", y);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-27 09:39:39 | 显示全部楼层
jackz007 发表于 2022-5-27 09:36
为什么要去掉前导 0?那是有意义的,代表完整的内存地址,可以防止出错。

啊,是這樣嗎
因為教材裡面前面沒有0
每台電腦都是有16位嗎?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-27 09:43:37 | 显示全部楼层    本楼为最佳答案   
一隻太平洋睡鯊 发表于 2022-5-27 09:39
啊,是這樣嗎
因為教材裡面前面沒有0
每台電腦都是有16位嗎?

      要去掉前导 0 ,把 printf() 里指针的格式描述符 “%-p” 换成 "%-x"  试试看呢。

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +2 收起 理由
一隻太平洋睡鯊 + 2 + 2 + 2 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2022-5-27 09:57:58 | 显示全部楼层
jackz007 发表于 2022-5-27 09:43
要去掉前导 0 ,把 printf() 里指针的格式描述符 “%-p” 换成 "%-x"  试试看呢。

所以p是顯示完整的路徑,總共有16位(每台電腦都一樣嗎?
用16進制的輸出符x就能只輸出含有值的部分(前面0就不會顯示)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-27 10:38:31 | 显示全部楼层
本帖最后由 jackz007 于 2022-5-27 10:40 编辑

       "%p" 是专门用于打印指针值的格式描述符,"%-p" 的意思是,在域宽范围内,按照右对齐的格式进行输出。

       至于指针有多少位(长度),这个问题完全取决于你所使用的 C / C++ 编译器的类型,如果你使用 32 位的编译器,那么,"%-p" 输出的指针长度就会是 4 个字节(8 个字符),如果编译器是 64 位,指针长度就会是 8 个字节(16 个字符),就你的程序输出来看,你所使用的编译器就应该是 64 位的。

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 收起 理由
一隻太平洋睡鯊 + 3 + 3 + 3 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2022-5-27 10:42:13 | 显示全部楼层
jackz007 发表于 2022-5-27 10:38
"%p" 是专门用于打印指针值的格式描述符,"%-p" 的意思是,在域宽范围内,按照右对齐的格式进行输出 ...

原來如此!!
不過"-"我記得是靠左?
其實是我自己加的(我貼的時候沒注意到貼了加"-"的XD
我是想試試看靠左能不能把0消掉
這麼天真的方法果然不可能啊23333
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 00:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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