堆区-可读可写
栈区-可读可写 &
局部变量、
全局区-可读可写 &
全局变量(所有文件可用)、静态局部变量(static:当前文件可用)
文字常量-只读
代码区-只读
二进制代码、
char arr[128] = "hello world"; // 这种写法是将字符串全部存在了栈区
char *p = "hello world"; // 这种是将字符串存在了文字常量区,而将h的地址作为指针存在了栈区
编译四阶段
预处理 -> 编译 -> 汇编 -> 链接
宏函数在预处理阶段进行替换;
*p 定义指针变量,指针变量中存储的是内存地址,不是普通的数值;
*p 取p这个指针变量指向地址中的内容;
&b 取地址;
int *arr[5]; // 指针数组,arr数组中五个元素都是指针;
int (*arr)[5]; // 数组指针,arr为指针变量,保存的是数组的首地址;