指针的定义 int *p; char *c;
指向一般数据类型时. int i; char t; 有 p=&i; c = &t;
指向一维数组时int i[1]; p = &i[0]; char t[10]; c = &t[0]; 或者 p =i; c = t;也可以,而p=&i; c=&t则会报错,类型不匹配.
二维数组时 int a[10][10]; p = a[0]; 或p = &a[0][0];一样.而p = a或p=&a[0] 或p = &a; 在不同的环境下会出现不同的反应,有的可以编译过去,有的则不可以..原因是a[0]指向的和&a[0][0]指向的都是数组a的元素地址,而a,&a,&a[0]都是指向的数组地址,类型不匹配.
指针数组----------数组中的元素为指针类型. char *p[10]; char*t; char **c;
所以p[0]中的元素为指针类型则有 p[0]=t; 成立. p[0]=*c;成立 p[0]=c;报错 c 为指针的指针,而不是指针类型,类型不匹配.
数组指针----------指向一组数组的指针变量.. char (*p)[]; char a[2]; char a[2][2]
p 是指向一维数组的指针变量 指针变量的值为地址所以就有p = &a; 也就是把数组a[2]的数组地址给P;同理有 p = &a[0] ; 或p=a; 而p=&a则报错,因为&a是二维数组的地址所以类型不匹配.
指向指针的指针-------**p (同指针没有什么大区别,只不过是又加了一层而已注意a[1][1] 中的&a 和a[1]中的&a是不同类型再看*p 中的p 和**p中的p 就容易明白了.
以上内容是我的理解有不对之处还请高手提出....