你如何你实现函数,它接受一个指针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)
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);
}
答案是很简单,只花了我,就像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的第一个元素[0] [0],所以你可能会改变的解释为编译器:
int* Mat = reinterpret_cast<int*>(M);