2017-09-14 113 views
0

我有一大堆我想添加到数组的不同行的大整数。这些整数定义如下:将定义的元素赋值给2D数组C

#define APARTMENT1_USAGES {0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0.189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.111, 0, 0, 0.000, 0, 0, 0, 0, 0, 0.065, 0.167, 0, 0, 0, 0.048, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0} 
    #define APARTMENT2_USAGES {0, 0, 0, 0, 0, 0, 0, 0.130, 0, 0, 0, 0, 0, 0.176, 0, 0.125, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.161, 0.000, 0.039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0.000, 0.109, 0, 0.032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.152, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0.135, 0, 0, 0, 0, 0, 0, 0, 0, 0.100, 0, 0, 0.063, 0, 0, 0, 0, 0.000, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0.000, 0, 0, 0, 0, 0, 0.378, 0, 0.147, 0.229} 
    #define APARTMENT3_USAGES {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0.01, 0.01, 0.02, 0.03, 0.03, 0, 0, 0, 0, 0.088, 0, 0} 

我已经缩短这些只是为了显示这个想法,他们通常是30x24的元素。 我想要做的是将每个这些加载到一个二维数组的行中,但得到一个语法错误没有解释。我如下已经尝试过了:

double apartmentUsage[3][30*24]; 
apartmentUsage[1][30*24] = APARTMENT1_USAGES; 
apartmentUsage[2][30*24] = APARTMENT2_USAGES; 
apartmentUsage[3][30*24] = APARTMENT3_USAGES; 
+2

'双apartmentUsage [3] [30 * 24] = {APARTMENT1_USAGES,APARTMENT2_USAGES,APARTMENT3_USAGES};'。您必须在初始化中执行此操作。 – mch

回答

0

一个你所面临的误区如下: 如果定义array[3],你可以存储在array[0]array[1]array[2]三个值。 在你的代码中。其定义为apartmentUsage[3][..],但以1开头。 应该像这个 -

int multiply=30*24; 
apartmentUsage[0][multiply] = APARTMENT1_USAGES; 
apartmentUsage[1][multiply] = APARTMENT2_USAGES; 
apartmentUsage[2][multiply] = APARTMENT3_USAGES; 

**BUT**这也不能完全解决问题。尝试在初始化本身指出评价做 - double apartmentUsage[3][multiply] = {APARTMENT1_USAGES, APARTMENT2_USAGES, APARTMENT3_USAGES};

+1

使用'30 * 24'可能比使用'multiply'更可取,因为后者将数组变成VLA(可变长度数组),而前者使它成为一个规则的固定大小的数组。 –