指针

  • *p[3] 是指针数组

    • 3 个 int*,[] 优先级高于 *,先是数组
  • (*p)[3] 是数组指针

    • 指向”3 个 int 的数组”的指针,p + 1 跳 3 个 int
  • 读法:从标识符出发,先右后左,[]、() 优先级高于 *

  • int (*f)(int) 是函数指针,int *f(int) 是返回指针的函数

  • char *argv[] 等价于 char **argv

  • 二维数组传参写 int a[][N] 或 int (*a)[N],列数不能省

  • 指针加减按所指类型大小跳,两个指针相减得元素个数不是字节数

  • const int *p 不能改 *p,int *const p 不能改 p

评论