0

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

最初,ActiveArray 变量指向 LKT 数组。但是,当我在 ScaledValues 中使用第一个 LKT 数组的缩放值填充数组的第二列时,如何将 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;
4

2 回答 2

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
于 2012-11-12T19:32:44.733 回答
0

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

首先定义应该是这样的

static unsigned int ScaledValues[2][30];

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

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

访问ScaledValues数组的第二行是

ScaledValues[1]
于 2012-11-12T19:34:03.977 回答