int Max(int a,int b)
{
return a>b ? a : b
}
int g_a = 10;
static int b = 20;
int *p1 = &a;
int *p2 = &b;
int *p3 = (int *)malloc(20); // 存在于main函数中
int *p4 = &g_a;
int (*p5)(int,int) = Max;
p1,&p1,p2,&p2,p3,&p3,p4,&p4,p5,&p5 所在的内存区域?
解析: 首先了解内存区域分为:代码段,全局(静态)变量区,栈,堆。
分析题目,对&p1则是求p1本身所在的内存区域。
又p1为局部变量,则p1在栈里面。 同理:&p2,&p3,&p4,&p5 在栈里面。
p1保存a的地址,则p1所在的内存区域也就是a所在的内存区域,所以p1在栈中。
p2保存b的地址,b又为静态局部变量,则p2在静态变量区。
p3为动态内存,故p3在堆。
p4保存g_a的地址,而g_a为全局变量,则p4在全局变量区。
p5为Max函数,则P5在代码段。