char *p[3]是一个指针数组,
我们常定义char *p[3]={"red","black","yellow"};
不就暗指字符串是指针吗?
char *p[3];是指针数组没错,p[0]、p[1]、p[2]这3个指针分别指向3个字符串,或者说指向3个字符串的首字符,这些指针你说它们指向的是字符也可以,看你怎么用,虽然指针指向了字符串,但不能反着说字符串就是指针啊,字符串就是一串以0结尾的字符组,如果当成字符串来用,比如printf("%s\n",p[0]);需要提供字符串起始指针,如果当成字符来用也可以,比如:while ( p[0]++ ) printf("%c",*p[0]); printf("\n");
所以说你的例子中的赋值是将3个字符串的首地址赋值给了指针数组p而已。
厉害,以后有C语言问题就请教你了!
来自:求助得到的回答