测试代码
#include <stdio.h>
#include <malloc.h>
int g_i = 100;
int g_j = 200;
int g_k, g_h;
int main(int argc, char * argv[])
{
const int MAXN = 100;
int *p = (int*)malloc(MAXN * sizeof(int));
int *q = (int*)malloc(MAXN * sizeof(int));
static int s_i = 5;
static int s_j = 10;
static int s_k;
static int s_h;
int i = 5;
int j = 10;
int k = 20;
int f, h;
char *pstr1 = "magictong Hello World";
char *pstr2 = "magictong Hello World";
char *pstr3 = "Hello World";
int * r = (int*)malloc(MAXN * sizeof(int));
printf("栈中数据地址i(有初值):x%08x = %d\n", &i, i);
printf("栈中数据地址j(有初值):x%08x = %d\n", &j, j);
printf("栈中数据地址k(有初值):x%08x = %d\n", &k, k);
printf("栈中数据地址f(无初值):x%08x = %d\n", &f, f);
printf("栈中数据地址h(无初值):x%08x = %d\n", &h, h);
putchar('\n');
printf("静态数据地址s_i(有初值):x%08x = %d\n", &s_i, s_i);
printf("静态数据地址s_j(有初值):x%08x = %d\n", &s_j, s_j);
printf("静态数据地址s_k(无初值):x%08x = %d\n", &s_k, s_k);
printf("静态数据地址s_h(无初值):x%08x = %d\n", &s_h, s_h);
putchar('\n');
printf("全局数据地址g_i(有初值):x%08x = %d\n", &g_i, g_i);
printf("全局数据地址g_j(有初值):x%08x = %d\n", &g_j, g_j);
printf("全局数据地址g_k(无初值):x%08x = %d\n", &g_k, g_k);
printf("全局数据地址g_h(无初值):x%08x = %d\n", &g_h, g_h);
putchar('\n');
printf("字符串常量数据地址pstr1:x%08x 指向0x%08x 内容为-%s\n", &pstr1, pstr1, pstr1);
printf("字符串常量数据地址pstr2:x%08x 指向0x%08x 内容为-%s\n", &pstr2, pstr2, pstr2);
printf("字符串常量数据地址pstr3:x%08x 指向0x%08x 内容为-%s\n", &pstr3, pstr3, pstr3);
putchar('\n');
printf("堆中数据地址p:x%08x 指向 = 0x%08x\n", &p, p);
printf("堆中数据地址q:x%08x 指向 = 0x%08x\n", &q, q);
printf("堆中数据地址r:x%08x 指向 = 0x%08x\n", &r, r);
free(p);
free(q);
free(r);
return 0;
}
运行结果