首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在c中打印0x0000000而不是(nil)和0x08ffffff而不是0x8ffffff

在C语言中,打印指针的地址时,可以使用格式化输出符号"%p"来实现。为了打印出0x0000000而不是(nil),可以使用空指针进行格式化输出。同样地,为了打印出0x08ffffff而不是0x8ffffff,可以使用带有前导零的格式化输出。

下面是示例代码:

代码语言:txt
复制
#include <stdio.h>

int main() {
    int* ptr1 = NULL;
    int* ptr2 = (int*)0x08ffffff;

    printf("%p\n", (void*)ptr1);
    printf("%#010x\n", (unsigned int)ptr2);

    return 0;
}

输出结果为:

代码语言:txt
复制
0x00000000
0x08ffffff

在上述代码中,我们使用了(void*)来将指针转换为void*类型,以满足%p格式化输出的要求。对于第二个打印语句,我们使用了%#010x来指定输出为带有前导零的16进制数,总共占据10个字符的宽度。

需要注意的是,这里没有提及任何特定的云计算品牌商,如腾讯云等。如果需要了解相关云计算产品和服务,可以参考各个品牌商的官方文档或网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 位带操作

    介绍 位带简介 位操作就是可以单独的对一个比特位读和写,这个在 51单片机中非常常见。51单片机中通过关键字 sbit 来实现位定义,STM32 没有这样的关键字,而是通过访问位带别名区来实现。 在 STM32 中,有两个地方实现了位带,一个是 SRAM 区的最低 1MB 空间,令一个是外设区最低 1MB空间。这两个 1MB的空间除了可以像正常的 RAM一样操作外,他们还有自己的位带别名区,位带别名区把这 1MB 的空间的每一个位膨胀成一个 32 位的字,当访问位带别名区的这些字时,就可以达到访问位带区某个比特位的目的。 外设位带区 外设外带区的地址为:0X40000000~0X40100000,大小为 1MB,这 1MB的大小在 103系列大/中/小容量型号的单片机中包含了片上外设的全部寄存器,这些寄存器的地址为:0X40000000~0X40029FFF 。外 设 位 带 区 经 过 膨 胀 后 的 位 带 别 名 区 地 址 为 :0X42000000~0X43FFFFFF,这个地址仍然在 CM3 片上外设的地址空间中。在 103 系列大中小容量型号的单片机里面,0X40030000~0X4FFFFFFF属于保留地址,膨胀后的 32MB位带别名区刚好就落到这个地址范围内,不会跟片上外设的其他寄存器地址重合。STM32 的全部寄存器都可以通过访问位带别名区的方式来达到访问原始寄存器比特位的效果,这比 51 单片机强大很多。因为 51 单片机里面并不是所有的寄存器都是可以比特位操作,有些寄存器还是得字节操作,比如SBUF。 虽然说全部寄存器都可以实现比特操作,但我们在实际项目中并不会这么做,甚至不会这么做。有时候为了特定的项目需要,比如需要频繁的操作很多 IO 口,这个时候我们可以考虑把 IO相关的寄存器实现比特操作。 SRAM位带区 SRAM的位带区的地址为:0X2000 0000~X2010 0000,大小为 1MB,经过膨胀后的位带别名区地址为:0X2200 0000~0X23FF FFFF,大小为 32MB。操作 SRAM 的比特位这个用得很少。 位带区和位带别名区地址转换 位带区的一个比特位经过膨胀之后,虽然变大到 4 个字节,但是还是 LSB 才有效。有人会问这不是浪费空间吗,要知道 STM32 的系统总线是 32 位的,按照 4 个字节访问的时候是最快的,所以膨胀成 4 个字节来访问是最高效的。我们可以通过指针的形式访问位带别名区地址从而达到操作位带区比特位的效果。那这两个地址直接如何转换,我们简单介绍一下。

    01

    关于堆栈的讲解(我见过的最经典的)

    一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束后有系统释放 4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。

    02

    JVM参数解析 Xmx、Xms、Xmn、NewRatio、SurvivorRatio、PermSize、PrintGC「建议收藏」

    -Xmx 指定最大堆,即堆内存的上线,当实际内存接近上线时会发生GC。 –Xms 最小堆,jvm运行的默认堆大小。 -Xmn 设置新生代大小 -XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久区)的比值。新生代和老年代默认比例是1:2。 4表示 新生代:老年代=1:4,即年轻代占堆的1/5 -XX:SurvivorRatio 设置两个Survivor区和eden的比 8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10。eden和两个survivor的默认比例是8:1:1 -XX:+HeapDumpOnOutOfMemoryError 发生OutOfMemory是导出堆信息到文件 -XX:+HeapDumpPath 指定导出堆信息路径 -XX:OnOutOfMemoryError 在OOM时,执行一个脚本 下面的命令表示在发生oom时把堆日志存储到/tmp/heapdump.hprof,并且执行sh ~/test.sh命令

    03
    领券