个人的看法,经过自己编写代码验证和思考。通过这样的思考,让自己编写与阅读C代码完全没有任何障碍。
type *name[] 在函数参数里面声明和不在函数里面声明其实不一样。
type *name[] 如果在函数声明里,则name 是一个二维指针,并不是一个指针数组。这可以通过sizeof 来确认。
void func(char *name[]) { printf("%d\n", sizeof(name); } char *str[] = {" we", "are", "good\n"}; func(str); // 输出4
通过输出4可以知道name 一个指针,而不是数组,不然为什么sizeof 的结果不是指针数组的大小,也就是12( 4 *3)。
下图是我的理解示意图
至于指针运算,像 *(*name +1) name[2][2]得到什么结果,是其他的话题了。
C语言里的指针探析——type *name[] 在函数参数里面,其实是一个二维指针
原文:http://www.cnblogs.com/celthi/p/4891378.html