gpt4 book ai didi

c++ - 从函数返回指向二维数组的指针

转载 作者:行者123 更新时间:2023-11-30 03:57:58 26 4
gpt4 key购买 nike

为了理解指针的工作原理,我编写了这个必须返回 3*3 矩阵的函数。

int** Matrix::getMatrix(){
cout<<"The matrix is: \n";
int (*p)[3]=m;

for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<m[i][j]<<"\t";
}
cout<<"\n";
}
return p;

}

这里 m 是一个 3*3 数组。但是在 return p; 行给出了错误 return value type does not match function type

对于 p,我不是返回一个指向 3*3 矩阵的指针吗?这有什么问题。有人可以帮我纠正这个问题吗。

最佳答案

int (*)[3]int** 不是同一类型:

  • int** 是指向 int
  • 的指针
  • int (*)[3]是3个int数组的指针。

即使int [3]可能会衰减到int*,不同类型的指针也是不同的。

返回 int (*)[3] 的正确语法是:

int (*Matrix::getMatrix())[3];

或使用typedef:

using int3 = int[3];

int3* Matrix::getMatrix();

因为 mint[3][3],你甚至可以返回引用 (int(&)[3][3]):

int (&Matrix::getMatrix())[3][3];

和 typedef:

using mat3 = int[3][3];
mat3& Matrix::getMatrix();

使用 std::arraystd::vector 会更直观

关于c++ - 从函数返回指向二维数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27686629/

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