C++ 中的数组可以被视为指向数组第一个元素位置的指针。二维数组可以被认为是一个指针数组,每个指针都指向另一个数组。虽然这并不是严格意义上的数组是如何实现的,但 C 支持数组和指向第一个元素的指针之间的隐式转换,您可以将它们视为相同的。Array[index] 只是*(Array + index*sizeof(whatever's in the array))
. 因此,要使您的功能正常工作,您只需执行以下操作:
void fn(int (*a)[10]) {
cout<<a[0][0]<<" "<<a[0][1];
}
int main() {
int A[10][10];
A[0][0]=1;
A[0][1]=2;
fn(A);
}
不需要先获取数组的地址,因为它已经是一个指针。但是,因为您使用的是 C++,所以您确实应该考虑使用标准容器:
void fn(vector< vector<int> > const&a) {
cout<<a[0][0]<<" "<<a[0][1];
}
int main() {
vector< vector<int> > A( 10, vector<int>(10) );
A[0][0]=1;
A[0][1]=2;
fn(A);
}