指针数组和数组指针的区别以及二维数组和数组指针的关联参见本文。
1)数组指针可以用来指向一个二维数组,如下所示:
char ch[2][6] = {"hello","world"};
char (*str)[6] = ch;//将二维数组的首元素的地址付给str
2)指针数组可以分别用来指向二维数组中的各个一维数组,如下所示:
char ch[2][6] = {"hello","world"};
char *str[2];//两个指针
for (int i = 0; i<2; i++)
str[i] = ch[i];
小结:指针可以用来指向数组,因为指针为变量,可以进行加减后的赋值运算,操作更加方便。
本文中我们分析一下二重指针和指针数组的关联:
指针数组,从元素上讲是指针,从形式上讲也是个数组,所以我们就可以用另一个指针来指向指针数组。
指针数组名是首元素的指针,首元素是指针,所以,指针数组名是个二重指针常量。我们可以用一个二重指针变量指向指针数组:
比如main函数中的第二个参数的两种形式:
int main(int argc,char *argv[])
int main(int argc,char **argv)
char ** argv1;
char *argv2[];
argv1 = argv2;
argv1[0]= "hello world';
小结:指针可以添加[]来解引用。二重指针只能添加一次[]解引用,使前方去掉一个*