传递给函数时多维数组的指针类型是什么?

时间:2017-02-24 04:19:32

标签: c arrays pointers multidimensional-array

我在大学课堂上学习C和指针,我认为除了多维数组和指针之间的相似性之外,我对这个概念有很好的把握。

我认为因为所有数组(甚至多维数组)都存储在连续内存中,所以可以安全地将其转换为/mnt/c/(假设给定的数组是int*。)但是,我的教授说定义中的星数取决于数组中的维数。因此,int[]将成为int[]int*将成为int[][]等。

所以我写了一个小程序来测试这个:

int**

令我惊讶的是,编译器在两个函数调用上发出了警告。

void foo(int** ptr)
{

}

void bar(int* ptr)
{

}

int main()
{
    int arr[3][4];

    foo(arr);
    bar(arr);
}

这里发生了什么?你怎么能改变函数调用,所以其中一个会接受数组?

编辑 How to pass a multidimensional array to a function in C and C++的副本,因为我问的是如何更改函数调用本身,而不是函数签名。

0 个答案:

没有答案