gpt4 book ai didi

c++ - 如何将二维数组转换为指针的指针

转载 作者:行者123 更新时间:2023-11-28 00:33:40 25 4
gpt4 key购买 nike

假设你有一个已经初始化的二维数组

int M[5][5] = { {1,3,4,2,5},
{3,5,1,6,2},
{7,5,6,2,0},
{6,2,9,7,6},
{1,0,8,5,2} };

M 将作为参数传递给函数。但是该函数只接受 int** 作为参数,而不是 int [][5]

我的问题是,如何进行这种转换?

最佳答案

指向指针的指针数组和二维数组在C中是完全不同的数据结构:

  • int ** 通常指的是一个指针数组,每个指针指向不同的行(分配在别处)
  • int [5][5] 底层是一个简单的线性数组,其中行一个接一个地存储,编译器自动对索引执行计算以访问正确的元素.

因此,有了 int[5][5],您必须自己构建指针数组,它将充当矩阵行的“索引”。

int * m2[5];
for(int i=0; i<5; ++i)
m2[i]=M[i];
f(m2);

关于c++ - 如何将二维数组转换为指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21783488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com