如何在二维数组中选择其他列?

时间:2012-11-12 19:26:27

标签: c++ c arrays

如何选择二维数组的第二列。 我有这个数组有大约30个值(LKT),从那里我有一个二维数组(ScaledValues)。该2维阵列的第2列将填充原始LKT阵列的缩放版本。

最初,ActiveArray变量指向LKT数组。但是,当我使用第一个LKT数组的缩放值填充ScaledValues中数组的第二列时,如何将ActiveArray移动到现在指向第二列作为我将使用的活动数组?即在我用所需的比例值填充第二列之后,我想使用这些值,我想使用ActiveArray变量来表示这个新列是活动数组。

我知道还有其他方法可以做到这一点,即我可以创建2个单独的单个数组,但我必须使用下面看到的格式。请协助。谢谢。

如果我需要让我的问题更清楚,请告诉我。

非常感谢你。

static const unsigned int LKT[30] = {
    30, 29, 28, 27, 26, 25, 24, 23, 22, 
    21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 
    11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

static unsigned int ScaledValues[30][2];


static volatile unsigned char ActiveArray = 0;

2 个答案:

答案 0 :(得分:1)

反转ScaledValues数组声明:

unsigned int ScaledValues[2][30];

for (int i = 0; i < 30; i++) {
    ScaledValues[0][i] = LKT[i];
    ScaledValues[1][i] = scale(LKT[i]);
}

// Also need to make this a pointer
unsigned int * ActiveArray = ScaledValues[0];    // Original values
ActiveArray = ScaledValues[1];                  // Scaled values

答案 1 :(得分:0)

操作此数组的更简单方法可以按照以下方式完成

首先定义应该是这样的

static unsigned int ScaledValues[2][30];

然后将LKT复制到第一个line(而不是column

memcpy(ScaledValues[0], LKT, 30*sizeof(unsigned int));

访问ScaledValues数组的第二行是

ScaledValues[1]