C++阵列和功能

C++ array & function

本文关键字:功能 阵列 C++      更新时间:2023-10-16

我有一个关于如何将 2D 数组传递给函数的问题。

我知道我可以做这样的事情:

void print(int a[][20]){
    cout << "print 1" << a[10][10] << endl;
}
int main(){
    int a[20][20];
    print(a);
    cout << "print 2" << *(*(a+10)+10) << endl;
}

打印 1 和 2 应该给我相同的结果。
如果我是对的,a 是 2D 指针。

但我不能这样做

void print(int** a){
}
int main(){
    int a[20][20];
    print(a);
    cout << "print 2" << *(*(a+10)+10) << endl;
}

错误是:

cannot convert ‘int (*)[20]’ to ‘int**’ for argument ‘1’ to ‘void print_int(int**)’为什么我不能这样做?

int **是指向 int 的指针,而不是 2D 数组。

因为int

**是"指向int的指针"。它与"指向二十个整数的指针"不同。因此,您的第二个代码与尝试传递您家居住的街道地址相同,而不是传递您家有地址的人的地址。

你应该使用数组表示法,而不是指针表示法,因为数组不是指针:

cout << "print 2" << a[11][11] << endl;