先明白什么是指针变量,和指针。指针其实就是存储单位的地址,指针变量是一个变量,用来存放指针(即地址);
int *p[N]表示指针数组,也就是说定义了N个int型的指针变量。
其中p[0] p[1] p[2] ...... p[N-1] 为指针变量,每个指针变量存放任意int型指针。
p是一个二重指针,p为是指针变量p[0]的指针(就是p[0]的地址)。
int (*p)[N]表示定义p为一个指针变量,它指向包含N个整形元素的一维数组。
其中(*P)[0] (*P)[1] ...... (*P)[N-1] 这些为一维数组的N元素。每个元素表示一个整形的变量,和int a中a表示的含义一样。
(*p)表示的就是(*P)[0]的指针(即地址),就和int a[] 中的a含义一样。
p为一个指针变量,存放的是(*p)的指针(地址的地址)。指针变量p存放的一个二重指针,和int **p中的p含义一样。
int **p 表示定义一个指向指针的指针。
p为一个指针变量,存放的是指针的指针(地址的地址)。
注:*p[N] , (*p)[N] 它们中的p表示含义不同,一个表示的指针,一个表示的指针变量。