0

2 次元配列の 2 列目を選択する方法を教えてください。この配列には約 30 個の値 (LKT) があり、そこから 2 次元配列 (ScaledValues) があります。この 2 次元配列の 2 列目は、元の LKT 配列のスケーリングされたバージョンで埋められます。

最初に、ActiveArray 変数は LKT 配列を指します。ただし、ScaledValues の配列の 2 番目の列に最初の LKT 配列のスケーリングされた値を入力する場合、ActiveArray を移動して、使用するアクティブな配列として 2 番目の列を指すようにするにはどうすればよいですか? つまり、2 番目の列に目的のスケール値を入力した後、それらの値を操作したいので、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配列の 2 行目にアクセスするには

ScaledValues[1]
于 2012-11-12T19:34:03.977 に答える