type *name[] 在函数参数里面声明和不在函数里面声明其实不同。html
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)。spa
下图是个人理解示意图指针
二维指针与二维数组不同,可是二维指针能够使用和二维数组同样的访问形式,即name[i][j]。htm
int *num[3] = { 1, 3, 5}; *num++;// error void func(int *num[]) { *num++;// no error; }
不能对数组名进行自增,由于数组名标志数组的开始地址,可是能够对二维指针进行自增,由于二维指针是一个指针变量。blog
原文地址get