#include "stdafx.h"
#include "stdio.h"
int *c1;
const *b1;
void fuzhi()
{
static int a=3;
// printf("%d\n",&a);
const int b=5;
printf("%d\n",&b);
b1=&b;
int c=6;
printf("%d\n",&c);
c1=&c;
}
int main(int argc, char* argv[])
{
int i=1;
int *p;
//通过地址获取值
// printf("%d\n",&i);
printf("%d\n",*(int *)1244996);
p=&i;
printf("%d\n",*p);
fuzhi();
//通过地址获取a的值,输出为3,说明a还保存着
printf("%d\n",*(int *)4345228);
// 通过地址获取b,c的值,输出并不是和原来的一样,说明b,c被释放了
printf("%d\n",*(int *)1244904);
printf("%d\n",*(int *)1244900);
//下面的输出和上面的值一样,说明上面两句确实是获取了1244904和1244900地址的内容
printf("%d\n",*b1);
printf("%d\n",*c1);
return 0;
}
解释:从地址中可以看出static int a=3; a的地址是4345228,而b,c,i地址都是124490..;由此可得a 应该是放在堆中,fuzhi()函数销毁后还会存在,而b,c,i应该是放在栈中,函数销毁后他们都会释放。