当我创建一个2D数组时,我认为该变量只是指向数组第一个元素的指针。所以我觉得我应该能够直接将它传递给一个期望指针作为参数的函数。似乎我可以为一维数组执行此操作,但不能用于多维数组。有人可以解释为什么会这样吗?
void the_function(int* the_array){}
int main(){
int the_array[3][3] = {{1,2,3},{1,2,3},{1,2,3}};
the_function(the_array);
}
如果我尝试编译它,我会收到以下错误:
candidate function not viable: no known conversion from 'int [3][3]' to 'int *' for 1st argument
void the_function(int* the_array){}
^
但如果我改为为the_array使用单个维度,那么它可以工作。
如果我在函数调用中将参数放在*之前,我可以使它工作: void the_function(int * the_array){}
int main(){
int the_array[3][3] = {{1,2,3},{1,2,3},{1,2,3}};
the_function(*the_array);
}
但我觉得*会取消引用指针,我不想这样做。传递给函数时它应该仍然是一个指针。
有什么想法吗?