printf("%p",a) 和 printf("%p",&a) 的区别
#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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。