开发者社区> 问答> 正文

printf("%p",a) 和 printf("%p",&a) 的区别

printf("%p",a) 和 printf("%p",&a) 的区别

展开
收起
a123456678 2016-06-06 10:05:39 2792 0
1 条回答
写回答
取消 提交回答
  • #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
        int *a = (int*)malloc(sizeof(int));
        *a = 1;
    
        printf("\na = %d", *a);
        printf("\na heap address = %p", a);
        printf("\n&a stack address = %p", &a);
    
        printf("\n");
        free(a);
    }
    gcc programname.c //编译
    ./a.out //运行
    
    结果如下(程序打印出的结果不尽相同):
    
    a = 1
    a heap address = 0x7fd67bc000e0
    &a stack address = 0x7fff528d8ac8
    第一行表示 变量a的值为1
    第二行表示 变量a所存储的内存地址0x7fd67bc000e0,(存放整数 ‘1’ 所用的4个bytes, 64位机器的话就是8个bytes),这块内存在堆上-heap
    第三行表示 变量a本身(一个整数型指针 int* )的内存地址0x7fff528d8ac8,这块内存在栈上-stack。建议参考 ARM寻址方式 @Hao Dong
    2019-07-17 19:27:45
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载