void show1(char * sz[], int n)
{
cout << sz[0] << endl;
cout << sz[1] << endl;
}
void show2(char (*sz)[20], int n) //能接受二维字符数组,首维数从实参无法取得,
//因为凡数组类型,编译器解释其类型均为指向首个元素的指针,
//而并不能带入元素个数
{
cout << *sz << endl;
cout << *(sz + 1) << endl;
}
void show3(char ** sz) //能接受指针数组名,它的成员都是各个指针,还是同样道理,
//因为凡数组类型,编译器解释其类型均为指向首个元素的指针,
//而并不能带入元素个数
{
cout << *sz << endl;
cout << *(sz + 1) << endl;
}
int main()
{
char str[2][20] = {"abc", "def"};
//err show1(str, 2);
show2(str, 2);
//err show3(str);
char *psz[2] = {"ghi", "jkl"};
//err show2(psz, 2);
show3(psz);
return 0;
}
因为凡数组类型,编译器解释其类型均为指向首个元素的指针,而并不能带入元素个数
而且字符数组,较为特殊,输出首元素的指针就会输出整个串
其它类型的数组,则严格的输出地址值或者输出元素值
{
cout << sz[0] << endl;
cout << sz[1] << endl;
}
void show2(char (*sz)[20], int n) //能接受二维字符数组,首维数从实参无法取得,
//因为凡数组类型,编译器解释其类型均为指向首个元素的指针,
//而并不能带入元素个数
{
cout << *sz << endl;
cout << *(sz + 1) << endl;
}
void show3(char ** sz) //能接受指针数组名,它的成员都是各个指针,还是同样道理,
//因为凡数组类型,编译器解释其类型均为指向首个元素的指针,
//而并不能带入元素个数
{
cout << *sz << endl;
cout << *(sz + 1) << endl;
}
int main()
{
char str[2][20] = {"abc", "def"};
//err show1(str, 2);
show2(str, 2);
//err show3(str);
char *psz[2] = {"ghi", "jkl"};
//err show2(psz, 2);
show3(psz);
return 0;
}
因为凡数组类型,编译器解释其类型均为指向首个元素的指针,而并不能带入元素个数
而且字符数组,较为特殊,输出首元素的指针就会输出整个串
其它类型的数组,则严格的输出地址值或者输出元素值