我想编写一个返回二维数组或矩阵的函数。这是我的尝试:
double **function(){
double d[2][2] = { { 1.1, 1.2 }, { 2.1, 2.2 } };
return d; //Error: return type does not match the function type.
}
int main(){
double d[2][2] = function(); //Error: initialization with '{...}' expected for aggregate object.
return 0;
}
我有错误。
谁能告诉我正确的方法或建议替代方法。
提前谢谢你。
最佳答案
数组和指针有很大的不同。是的,数组确实会在第一时间转换为指向元素类型的指针,但这不并不意味着它们完全相同。
您尝试在它们之间转换的实体在内存中具有完全不同的布局:
- 二维数组由内存中连续的两个
double
数组组成。 - 指向
double
的指针的指针是指向double
的指针 的数组。
虽然两者都可以在具有相当相似使用体验的表单中使用,但它们在程序中的处理方式完全不同。
但是,您可以这样做(假设您使用 C++11 或更高版本的编译器进行编译):
#include <array>
std::array<std::array<double, 2>, 2> function() {
std::array<std::array<double, 2>, 2> d = { { { 1.1, 1.2 } , { 2.1, 2.2 } } };
return d;
}
int main(){
std::array<std::array<double, 2>, 2> d = function();
return 0;
}
关于c++ - double **function() 的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221170/