自己试着摸索的,会尝试int**做形参,没学过很难知道问题所在
错误示例
void f(int** p){
;
}
int main(){
int a[10][10];
f(a);
}
正确示例
void f1(int a[10][10])//直接用相同的数组做形参
{
cout<<a[1][2]<<' '<<a[2][1]<<endl;
}
void f2(int a[][10])//可以省略第一维,但第二维不能省
{
cout<<a[1][2]<<' '<<a[2][1]<<endl;
}
void f3(int (*a)[10])//一维数组指针
{
cout<<a[1][2]<<' '<<a[2][1]<<endl;
}
void f4(int (&a)[10][10])//二维数组引用,必须指定两个维度
{
cout<<a[1][2]<<' '<<a[2][1]<<endl;
}
int main(){
int a[10][10];
a[1][2]=12;
a[2][1]=21;
f1(a);
f2(a);
f3(a);
f4(a);
}
int**的正确使用场合
顺便说一下第二维不是常量的实现方法
void F(int **p){
}
int main(){
int n=10,m=10;
int** p = new int* [n];
p[0] = new int[n*m];
for(int i = 1; i < n; i++){ //指定下标寻址方式
p[i] = p[i-1] + m;
}
F(p);
}