C ++指针,具有2D阵列

问题描述 投票:0回答:3

你如何你实现函数,它接受一个指针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)
c++ pointers matrix
3个回答
1
投票

M×N个阵列衰变的指针的第一行(长度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);
}

0
投票

答案是很简单,只花了我,就像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);
}

-2
投票

中号指向第一行,但它的价值是一样的指针,这是M的第一个元素[0] [0],所以你可能会改变的解释为编译器:

int* Mat = reinterpret_cast<int*>(M);
© www.soinside.com 2019 - 2024. All rights reserved.