[英]How to dynamic assign a global 2d array in C++
我想制作一个 2d、3 x 3 的数组,如下所示:
double *array;
void setArray(double x, double y, double z){
array = {{x,0,0},
{0,y,0},
{0,0,z}};
}
我读了一些帖子建议是这样的:
double **array = new double*[3];
void setArray(double x, double y, double z){
array[0] = new double*[3];
array[0][0] = x;
array[0][1] = 0;
array[0][2] = 0;
...
如果有任何方法我可以直接使用值 {{x,0,0},{0,y,0},{0,0,z}} 设置二维数组?
提前致谢。
如果你想使用像{{x,0,0},{0,y,0},{0,0,z}}
这样的列表,你应该使用硬编码大小的 arrays:
double *array; // no good
double array[3][3]; // OK
用复制填充它们:
void setArray(double x, double y, double z){
double temp[3][3] = {{x,0,0},
{0,y,0},
{0,0,z}};
memcpy(&array, &temp, sizeof(array));
}
如果不需要交错数组,并且大小在设计时已知,则可以使用以下语法来声明它:
double array[3][3];
但是,如果你想使用初始化列表,你可以这样做:
typedef double Array[3][3];
Array& array(double x = 0.0, double y = 0.0, double z = 0.0) {
static double array_[3][3] = {{x,0,0},{0,y,0},{0,0,z}};
return array_;
}
// init:
array(4,5,8);
// access:
array()[0,2];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.