- int i = 0;声明一个int类型的值
- int a [5] = {1,2,3,4,5};声明一个数组.
- int* p = &a; 声明一个指针指向地址.
- a == &a == &a[0] 这里&为取地址, a本身表示的就是数组的地址.数组地址指向数组的首值地址.
- *p==a[0] *p表示取地址中值,因为int* p = &a(这里的星和*p不一样,这里表示"声明类型",*p表示"取值"), 而a地址又为首项地址,所以取值后为首项值.
- *(p+1) == a[1] 数组中的次项地址为首项地址加一, 取首项+1的值就为取次项的值.
- 指针就是门牌号, 门牌号做乘除是没有意义的,只能做加减.
指针的运算一般和数组相关,因为数组是一块连续的内存空间, 不连续的内存空间做加减也是没有意义的. - 程序的运行过程: 硬盘加载到内存中被CPU执行.
- 内存分区: data(存放一些常量), code(存放方法,代码), heap(堆,不连续的内存区域malloc方法分配的内存在此区域), stack(栈,连续的内存区域,系统分配的内存在此区域)
- 动态分配内存