zoukankan      html  css  js  c++  java
  • [C]%p和%02x含义

       前言:

          嘿嘿,已经很久没有写博客了,最近有一些新收获得赶紧写下来。

          今天上了计算机组成原理的实验课,不过这种实验课真的太划水了,还是的课下自己搞。

    • %p的含义

        “%p”中的p是pointer(指针)的缩写,指针的值是一个表示地址空间中某个存储器单元的整数。

        printf函数族中对于%p一般以十六进制整数方式输出指针的值。

     1 #include <stdio.h>
     2 
     3 typedef unsigned char *byte_pointer;
     4 
     5 void showBytes(byte_pointer start, int len) {
     6     int i;
     7     printf("Address HexValue
    ");
     8     for (i=0; i<len; i++)
     9         printf("%p %02x
    ", start +i,start[i]);
    10 }
    11 
    12 int main(void){
    13     int a = 100;
    14     short b = 100;
    15 
    16     printf("int a = %d, 字节数: %d
    ", a, sizeof(a));
    17     showBytes((byte_pointer) &a,sizeof(a));
    18 
    19     printf("int b = %d, 字节数: %d
    ", b, sizeof(b));
    20     showBytes((byte_pointer) &b,sizeof(b));
    21 
    22     return 0;
    23 }

      输出为:

    所以,%p的实质即为将所指向的数据地址以十六进制的形式输出。

    注意:对于指针来说%p的打印的为所指向的数据地址。指针自己的实际地址 &p,用%p来打印。

    1 int main(){
    2     int *p = &a;
    3     printf("%p
    ", p);
    4     printf("%p
    ", &p);
    5     return 0;
    6 }

    (省略了头文件,懂意思就行)

    • %02x含义

         x代表以十六进制形式输出,02代表不足两位,前面补0输出,右对齐如果超过两位,则以实际输出。

  • 相关阅读:
    JAVA框架 Spring 事务
    JAVA框架 Spring 调用jdbcsuport简化开发
    JAVA框架 Spring JDBC模板
    JAVA框架 Spring AOP注解
    JAVA框架 Spring AOP--切入点表达式和通知类型
    JAVA框架 Spring AOP底层原理
    JAVA框架 Spring junit整合单元测试
    JAVA框架 Spring 注解注入
    JAVA框架 Spring 引入多个配置文件
    django序列化
  • 原文地址:https://www.cnblogs.com/xzzheng/p/10726945.html
Copyright © 2011-2022 走看看