指向2d数组c ++的数组指针

时间:2015-09-29 09:36:21

标签: c++ pointers multidimensional-array

我有N个2d(列,行)数组。因此,我试图创建一个大小为N的数组指针,每个指针指向相应的2D数组。代码就像。

int col = 3,row = 2,N =2;
float blue[][row] = {1,2,3,4,5,6}; // 2d array (for N=1)
float green[][row] = {1,2,3,4,5,6}; // 2d array (for N=2)
float (*arry_ptr[N])[col][row]; // this works
arry_ptr[0]= &blue;  // trying to point the 1st pointer to 1st 2d array
arry_ptr[1]= &green;  // trying to point the 2nd pointer to 2nd 2d array

我知道最后两行代码不合适,但它确实会抛出错误。是否有任何解决方案来增加指针并使其按顺序指向2d数组,而不是像下面一行那样。

float (*arry_ptr[N]) ={a,b}  // this works but i can allocate only single 2d array at a time.

3 个答案:

答案 0 :(得分:1)

首先,C ++没有variable-length arrays,所以从技术上讲,你的代码不合法​​。维度需要是编译时常量。

其次,如果是我,我会使用std::array代替,并使用类型别名。像这样:

| id            | int(11)      | NO   | PRI | NULL    | auto_increment |
| ip            | varchar(50)  | NO   |     | NULL    |                |
| polling_time  | int(10)      | NO   |     | NULL    |                |
| communitydata | varchar(100) | NO   |     | NULL    |                |
| snmp_oid      | varchar(250) | YES  |     | NULL    |                |
| lastcheck     | datetime

潜在地,取决于using array_type = std::array<std::array<float, 2>, 3>; array_type blue = { ... } array_type green = { ... } array_type &array_refs[] = { blue, green }; blue数组的用途,我宁愿使用std::pair而不是嵌套数组。所以请改为:

green

甚至是结构。

答案 1 :(得分:1)

现在我在最后两行没有收到任何错误。我只是将它改为常数整数,因为我使用的是固定大小.Dint监督它。

const int col = 3,row = 2,N =2;
float blue[][row] = {1,2,3,4,5,6}; // 2d array (for N=1)
float green[][row] = {1,2,3,4,5,6}; // 2d array (for N=2)
float (*arry_ptr[N])[col][row]; 
arry_ptr[0]= &blue;  // trying to point the 1st pointer to 1st 2d array
arry_ptr[1]= &green;  // trying to point the 2nd pointer to 2nd 2d array

干杯, LAKSHMI

答案 2 :(得分:0)

C ++被标记为,

这样做“float(* arry_ptr [N])= {a,b}”。我建议使用结构而不是普通数组。

Struct {float a,b}; //在此之后你可以做到。