c入门小记

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

                                image

原文地址:https://www.cnblogs.com/olvo/p/2476269.html