char *name[] 你看这个和定义指针有什么区别,是不是多了一个[],然后看和定义数组有什么区别,是不是多了一个*。
那么单独来看一下,定义数组char name[4],这样定义了一个字符数组,而此时的name是什么?是不是这个数组的首地址的指针,也就是说定义了一个字符指针,这个指针指向数组的首个位置。
那么再单独看一下,定义一个指针,char *name,这个指针和上面定义的数组有什么区别?是不是在于这个指针的空的,没有指向任何地方,而如果我在加一句name=(char*)malloc(4*sizeof(char));这样name就指向了一个4个字符大小的地址的首个位置,和上面定义的数组完全没有区别了。
好了,char *name[] 这里既有*又有[],就是说定义的是指针,但是是指针数组,也就是很多个指针,而这其中的每一个指针都指向一个字符串的首个位置,也就是字符串数组,字符串数组也就是字符的二位数组。。。。
说了这么多,应该理解了吧。。。。