- 全局和静态数据区:用于存放全局变量和静态变量(全局变量和局部变量)
- 常量数据区:用于存放常量数据
- 代码区:用于存储代码
- 栈:用于局部变量和函数参数
- 堆:程序员申请(程序员控制的部分,new/delete
#include <stdio.h> #include <stdlib.h> int gGlobal=100; // global int main(void){ char *pLocalString1="LocalString1"; const char *pLocalString2="LocalString2"; static int nLocalStatic=100; int nLocal=10; const int nLocalConst=20; int *pNew = new int[5]; char *pMalloc = (char*)malloc(1); printf("global var 0x%x ",&gGlobal); printf("static var 0x%x ",&nLocalStatic); printf(" "); printf("local var1 0x%x ",&pLocalString1); printf("local var2(const) 0x%x ",&pLocalString2); printf(" "); printf("pNew 0x%x ",pNew); printf("pMalloc 0x%x ",pMalloc); pLocalString1[1]='a';//error 字符常量,数据定义好后,不能在修改.该地址,在编译前已经确定好 printf(" "); printf("local point(pNew) 0x%x ",&pNew); printf("local point(pMalloc) 0x%x ",&pMalloc); printf("local point(pLocalString1) 0x%x ",&pLocalString1); printf("local point(pLocalString2) 0x%x ",&pLocalString2); printf("local point(nLocalConst) 0x%x ",&nLocalConst); printf("local point(nLocal) 0x%x ",&nLocal); }