搬砖:%P 和%X有什么区别

C/C++占位符,%x和%p的区别 今天遇到了一个很奇怪的问题,当使用`malloc`分配了一个堆空间后,分别尝试用`cout`和`printf`尝试打印该地址,出现了两个地址不一样的情况:可以看出两个地址低32位是一致的,出现问题的原因应该是`printf`显示不全导致的。 阅读详情

https://bbs.youkuaiyun.com/topics/391981254

C语言中 %P 和%X有什么区别,书上在同一段程序中 一会用%X,一会用%P,不明白

网上有的说 %P就相当于0X%X,但是我看一下结果,%P比%X在前头多输出两个0,为什么不是0X呢  
 

 

0 2016-07-07 23:02:26

只看TA 引用 举报 #5    得分 0

lm_whales

Bbs8

BlankBlank

一个是专用,遵纪守法的用法,%p用于输出指针,这是一直以来都这么做的,也是写在标准里面的。
一个是乱用,无视法纪。%x 输出指针,这是没有认真学习,printf 类输出函数,输出数据的方式
想当然的,以为指针和整形数大小相同,胡乱用的。凑巧没错,是不能保证的

0 2016-07-08 10:56:37

只看TA 引用 举报 #6    得分 1

对于摄像机而言同样清晰度下25p和50i画质会有什么差别? 对于摄像机而言同样清晰度下25p和50i画质会有什么差别?

engineer-yang

Bbs1

%p输出地址,%x 16进制输出值。

0 2016-07-08 13:12:38

只看TA 引用 举报 #7    得分 1

winbond w25p64 datasheet The W25Q64FV (64M-bit) Serial Flash memory provides a storage solution for systems with limited spac

贾可

Bbs5

32 位程序,%p 等同于 %08x;64 位程序,%p 等同于 %016llx。
也就是说,指针有多少字节他就输出多少字节。

0 2016-07-22 16:12:58

只看TA 引用 举报 #8    得分 5

STM25p64v6p 64M位SPI串行FLASH存储器。 64 Mbit, Low Voltage, Serial Flash Memory With 50MHz SPI Bus Interface

自信男孩

Bbs8

BlankBlank

%X和%x的不同是在a~f上的大小写的不一样;%x是小写a~f,比如(0x)3d; %X是大写A~F,比如(0x)3D;他们都标识以16进制格式;
%p是输出指针地址;但是%P不知道是啥鬼,没用过;

0 2016-07-22 17:27:08

只看TA 引用 举报 #9    得分 5

EDIUS 视音频制作标准教程(第2版)21堂课高清1280X720 25Pmp4格式 含同步素材 edius初学者必备装备 EDIUS 视音频制作标准教程(第2版)21堂课高清1280X720 25Pmp4格式 含同步素材 edius初学者必备装备 肖一峰,作为Grass Valley 公司EDISU产品工程师,有大量机会与国内外第一线的制作者接触,从大量的教学和交流中汲取新的营养。 本书配有2DVD光盘,其中包含所有实例制作所需要的素材与效果文件、视频结果文件,以及21堂1280X720高清教学视频录像(大小5.

hijack00

Bbs3

%p专门用于输出一个地址(也就是指针的值),而%x用于将一个整型数按照十六进制输出,如果是小写的x则输出小写形式,如果是大写的X则输出大写形式。例如,十进制170如果用%x输出aa,用%X输出AA。%和x之间还可以输入一个整型数表示宽度,输入0表示宽度不足时补零,负号-表示右对齐。还以十进制170为例:
%4X    输出:AA[][]
%-4X   输出:[][]AA
%04X  输出: 00AA
%-03X 输出: []0AA
0X%X  输出: 0XAA
等等([]表示空格)

%p 打印地址?它打印的是变量值!什么是格式化输出,指针与地址的区别 不要再被什么“%p 打印变量地址”、“%p 格式化地址” 误导了! 不要把指针神秘化、复杂化,它就是一个有点特殊的变量而已! 首先说指针与地址的区别: 指针是一个变量,这个变量占用一个存储空间,内部存储了一个值,只不过这个值比较特殊,它表示另一个变量的地址; 我们忽略这个值的特殊性,就可以发现,指针变量和其他变量并没有什么区别,都是一个变量,存储了一个值,如此而已! 而地址,... 阅读详情

相关推荐

C/C++中%x和%p的坑:为什么我的指针地址打印不全?

本文深入解析了C/C++中指针地址打印的常见陷阱,重点对比了%x和%p两个占位符的本质区别。在64位系统上,%x因期待32位unsigned int参数,会导致64位指针地址被截断,而%p专为void*设计,能正确输出完整地址。文章提供了使用%p、uintptr_t结合PRIxPTR宏等可移植的解决方案,并强调了类型安全与避免格式化字符串漏洞的重要性。

weixin_29015801的博客 270

C语言”%p”的意思-----printf("%p",p)

printf("%p",p) %p是打印地址(指针地址)的,是十六进制的形式,但是会全部打完,即有多少位打印多少位。 32位编译器的指针变量为4个字节(32位),64位编译器的指针变量为8个字节(64位)。 所以,在32位编译器下,使用%p打印指针变量,则会显示32位的地址(16进制的);在64位编译器下,使用%p打印指针变量,则会显示64位的地址(16进制的),左边空缺的会补0...

Young_Fan 5万+

winget安装提示:执行此命令时发生意外错误: InternetOpenUrl() failed. 0x80072efd

当我们使用Winget包管理器安装应用,提示错误:执行此命令时发生意外错误: InternetOpenUrl() failed. 0x80072efd 该怎么处理呢?请听我娓娓道来。

Linux I Tell U 8138

C语言杂记

%p和%x的区别 %p是打印地址(指针地址)的,是十六进制的形式,但是会全部打完,即有多少位打印多少位。 32位编译器的指针变量为4个字节(32位),64位编译器的指针变量为8个字节(64位)。 在32位编译器下,使用%p打印指针变量,则会显示32位的地址(16进制的);在64位编译器下,使用%p打印指针变量,则会显示64位的地址(16进制的),左边空缺的会补0。 %x:无符号十六进制整数(字母小写,不像上面指针地址那样补零) %X:无符号十六进制整数(字母大写,不像上面指针那样补零) %x、%X和%p的相

Jocelin47的博客 826

基于Qt与PaddleOCR的跨平台OCR工具开发实战

本文详细介绍了基于Qt与PaddleOCR开发跨平台OCR工具的实战经验。通过Qt的跨平台特性和PaddleOCR的高效识别能力,开发者可以快速构建支持Windows、Linux和macOS的OCR工具。文章涵盖了环境配置、核心功能实现、性能优化及打包发布等关键环节,特别针对中文识别、内存管理和多线程处理等常见问题提供了解决方案。

weixin_30296405的博客 90

保姆级教程:在阿里云ECS上用Docker一键部署EMQX MQTT服务器(Ubuntu 20.04)

本文提供在阿里云ECS上使用Docker一键部署EMQX MQTT服务器的详细教程,涵盖从实例创建、Docker环境配置到EMQX部署与优化的全流程。适合物联网开发者快速搭建高效、安全的MQTT消息服务器,适用于智能家居、工业物联网等场景。

weixin_28739079的博客 308

C学习:%p和%x、%lx、%hx、%llx区别辨析

%p和%x、%lx、%hx、%llx(对应int、long、short、long long)区别 总结: %p 可以匹配对应类型的指针地址,输出以16进制表示,会自带前缀0x %x 可以对应int类型的指针,输出以16进制输出,不会自带前缀0x 类似的,%lx,表示long类型指针,用16进制输出 分析: 当然,上面也可以用 %ld,表示将long类型的指针地址,强制用10进制输出 %x只对应输出进制类型,具体的指针地址输出需要根据指针类型加修饰符 %p就固定了用16进制,可以囊括不同类型的指针地址表达

来知晓的博客 4万+

从零到一:在K210上实现YOLO模型在线训练与部署全流程

本文详细介绍了在K210芯片上实现YOLO模型在线训练与部署的全流程,涵盖数据采集、模型优化、量化转换及内存管理等关键环节。通过实战案例和代码示例,帮助开发者高效利用K210的超低功耗特性与YOLO模型的实时检测能力,适用于边缘计算和物联网应用场景。

weixin_29094539的博客 350

C语言中的格式化输出符号:%d %c %p %x等

d是C语言中的格式化输出符号,用于将整数值按照十进制格式输出到标准输出流(通常是控制台)。它可以用于printf函数中的格式化字符串中,指示要输出的整数的位置和格式。例如,"%d"可以用来输出一个整数变量的值。%c是C语言中的格式化输出符号,用于输出字符。在printf函数中,%c可以用来输出一个字符变量的值。在你的代码中,如果你想打印出数组元素的字符表示,你可以使用%c。在C语言中,%p是一种格式化输出的转换说明符,用于打印指针变量的值。输出其他类型的数据,将会导致未定义的行为。类型的数据,如果使用。

Shujie 7万+

TDISP(TEE Device Interface Security Protocol)软件操作流程

/ 1. SPDM会话相关定义(🔶1-37、🔶1-187)// SPDM会话ID// AES-256-GCM加密密钥(TDISP要求)// 初始向量// 会话是否激活// 2. IDE流配置(🔶1-52、🔶1-625)// IDE流ID// 4个子流的AES密钥(覆盖所有子流类型)// 密钥是否已配置// 3. TDI状态与配置(🔶1-207、🔶1-210)TDI_CONFIG_UNLOCKED = 0, // 初始配置态。

inquisiter 1433

2021秋招IC验证面经-ARM中国/中科芯/飞腾/地平线/中兴

中科芯 (央企福利待遇好,但是百分百不解决户口,适合当地人进去躺平。) 现场面试,三个面试官,时间大约40min 首先介绍一下自己,介绍一下项目。所做项目用到了FIFO吗,深度是多少,位宽是多少,仲裁算法是什么? 验证环境中的reference model是自己写的还是本身就有的,仲裁怎么在参考模型中实现,参考模型怎么获取寄存器的值? 怎么配置RTL寄存器,通过平台的寄存器模型进行寄存器配置,寄存器模型里边的方法,写一个寄存器或读一个寄存器怎么实现? 寄存器如何实现前门访问和后门访问,后门访问时

weixin_48014653的博客 6319

C语言%d、%c与%hhd的区别,%p与%x的区别

1.printf(("%%d)=%d", a), 这里%% 可以输出% 2.sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕 3. sprintf()最常见的应用之一莫过于把整数打印到字符串中,如: char s[10]; sprintf(s, "%d", 123); //把整数123打印成一个字符串保存在s中 sprintf(s...

小白tree的博客 3万+

Matlab图像处理频域滤波实现——高斯低通、高通、带通带阻滤波器

如果你想要进一步了解更多的相关知识,

小嘤熊的博客 1万+

c语言转换说明符总结(%d,%i,%u,%f,%o,%x,%X,%p,%s,%g,%e)

c语言转换说明符总结(%d,%i,%u,%f,%o,%x,%X,%p,%s,%g,%e),各个转义符的区别和举例

Penseur2018的博客 2万+

SAP 系统中的数字签名解决方案及应用案例分析

在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 528

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C语言%p与%x的区别

“%p”中的p是pointer(指针)的缩写。%p是打印地址的, 而%x是以十六进制形式打印。 %p是打印地址(指针地址)的,是十六进制的形式,但是会全部打完,即有多少位打印多少位。 32位编译器的指针变量为4个字节(32位),64位编译器的指针变量为8个字节(64位)。 所以,在32位编译器下,使用%p打印指针变量,则会显示32位的地址(16进制的);在64位编译器下,使用%p打印指针变量,则会显示64位的地址(16进制的),左边空缺的会补0。 %x:无符号十六进制整数(字母小写,不像上面指针地址那样补零

QWQ___qwq的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

c语言中%p和0x%x,C语言中的%p和%x的区别

1、输出的类型不同:%p用来输出指针的值、输出地址符。指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。而%x, %X 输出无符号以十六进制表示的整数。2、输出的结果会有不同:32位系统下寻址能力(地址空间)是4G Bytes(0~2^32-1)二进制表示长度为32bits(也就是4Bytes), unsigned int类型也正好如此取值,%p用来输...

weixin_36011776的博客 8573

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

c语言中%p和%x的意思

图示: 其中,%p和%x均表示十六进制,只是格式不同 附代码: #include<stdio.h> #include<string.h> int main() { char c, s[20], *p; int a=1234, *i; float f=3.141592653589; double x=0.12345678987654321; p="How ...

Linger_stu的博客 1万+

c语言里的%p的作用,关于C语言中%p和%X的思考

概述说白了,(%A)仅仅代表以何种格式显示所要显示的数据,具体何种格式如下:%d 有符号10进制整数%i 有符号10进制整数%o 无符号8进制整数%u 无符号10进制整数%x 无符号的16进制数字,并以小写abcdef表示%X 无符号的16进制数字,并以大写ABCDEF表示%F/f 浮点数%E/e 用科学表示格式的浮点数%g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表...

weixin_33601398的博客 4477

c语言中 null 和NULL的区别 %p和%x的区别 在dvc++运行

#include <cstddef> #include<stdio.h> int main() { int *p; /* c语言和c++对大小写是敏感的, 也就是说null和NULL是区别对待的。NULL代表空地址,null只是一个符号。 其实null和NULL都是字符串,看你把它们,宏copy定义为什么值, 在VS中NULL被定义为0,因为习惯上...

qq_25648915的博客 1891

指针使用%p输出,区分%x与%p的区别?

几年前写的一个模块,前几天准备把它拿出来编译成64位的版本使用,因为对于windows的API一直是按照参数微软文档给出的原型进行调用,也没有指针到整数的强转,因此整个编译几乎没遇到问题,直接生成64位版本,但是测试时发现一个问题,所有的运行log输出的地址值都不对,64位系统下log里记录的还是32位的地址值,显然是被截断的地址值。看了一下代码,原来所有指针的格式化用的都是”%x”,真是欲哭无泪,

大自然的代码 1万+

【逆向】%p和%x、%lx、%hx、%llx区别辨析

p可以匹配对应类型的指针地址,输出以16进制表示,会自带前缀0x%x可以对应int类型的指针,输出以16进制输出,不会自带前缀0x类似的,%lx,表示long类型整数,用16进制输出;%lx,表示long long类型64位整数,用16进制输出;

qq_43331089的博客 540

Linux %p和%x的区别

%p打印地址 %x打印值

weixin_61637506的博客 555

指针变量-printf %d和%p的含义

1.指针变量的值是地址,地址通常用16进制表示 2.int a=1; int* p=&a; printf("%d\n",p);和printf("%p\n",p);有什么区别呢,输出的都是p的值,%p是把指针变量p中存储的a的地址以十六进制形式输出,%d是吧p中存储的a的地址以十进制形式输出。输出的都是p的值,不要理解成%p,是把p的地址输出。 %p就是专门给指针变量使用的,输出指针变量中存储的值,也就是其他变量的地址,只不过是以十六进制形式输出。 #include<stdio.

qq_39224221的博客 8098

%p 与 %x

%p 输出sizeof(void*)大小的数据 %x 输出sizeof(unsigned int)大小的数据 Please do not use %x for pointers

沧海无际 691
上一篇: 面:c++笔试题汇总
下一篇: 搬砖:函数名&函数名取地址
nedwons
博客等级 码龄9年 311粉丝 572原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值