C++带有 2D 数组的指针

C++ Pointers with 2D Arrays

本文关键字:指针 数组 2D 带有 C++      更新时间:2023-10-16

您如何实现将指向 2D 数组的指针int*作为输入的函数?我当前的代码是:

#include <iostream>
using namespace std;
int main (void){
  int M [4][4] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12},
    {13,14,15,16},
  };
  int* Mat = M;
  myFunc(Mat);
}
void myFunc(int* Matrix)

MxN 数组衰减到指向第一行(长度 N(的指针。如果你想要一个指向开头的指针,那么你需要允许第一行衰减到指向第一个元素的指针。另请注意贝克尔@Pete下面所说的话。

#include <iostream>
void myFunc(int* Matrix);
int main (void){
  int M [4][4] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12},
    {13,14,15,16},
  };
  int* Mat = M[0];
  myFunc(Mat);
}

答案很简单,只花了我 4 个小时(必须喜欢编码(。因此,取出int* Mat = M[0];并在调用函数时简单地重新转换为(int*)

#include <iostream>
void myFunc(int* Matrix);
int main (void){
  int M [4][4] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12},
    {13,14,15,16},
  };
  myFunc((int*)M);
}

M 指向

第一行,但它的值与指向第一个元素 M[0][0] 的指针相同,因此您可以更改编译器的解释:

int* Mat = reinterpret_cast<int*>(M);