0

私は過去 1 時間ほど自分のコードをいじっていましたが、思い通りに動作させることができないようです。配列が固定状態であるという考えについて読んでいましたが、正直なところ、この小さな実験で燃え尽きてしまったので、助けていただければ幸いです。

基本的に私がやりたいことは、宣言した 3 つの温度センサーの読み取り値を取り、それらを配列にまとめることです。その時点から、ユーザーが選択した現在のチャネルに応じて、配列内のそれぞれの変数の値をインクリメントできるようにしたいと考えています。

したがって、ユーザーがチャネル 0 にいて R を押すと、次のコード ブロックで temperatureSensor1Reading をインクリメントする必要があります。これがコード全体ではないことはわかっていますが、これは現時点で私の問題を特定しています。

temperature_t は、先ほど宣言した typedef です。プログラムでエラーは発生しませんが、R または F (インクリメントまたはデクリメント) を押しても何もしません。私の目標を反映するコードのブロックを強調しただけです。事前にご協力いただきありがとうございます。

temperature_t selectChannel = 0;
temperature_t temperatureSensor1Reading = 75;
temperature_t temperatureSensor2Reading = 75;
temperature_t temperatureSensor3Reading = 75;
temperature_t temperatureSensorReadings[3] = {temperatureSensor1Reading, temperatureSensor2Reading, temperatureSensor3Reading};


case 'R': //if user input is R
case 'r'://if user input is r


    temperatureSensorReadings[selectChannel] ++;

break; //exits loop
4

2 に答える 2

4

配列には、配列の作成時の変数の値のコピーが含まれているだけです。配列を変更すると、値のコピー元の変数ではなく、配列だけが変更されます。配列に温度ではなく温度へのポインタを保持させることで、あなたがやろうとしていることを達成することができます:

temperature_t *readings[] = {&temp1, &temp2, &temp3};
// ...later...
(*readings[channel])++;
于 2013-03-20T04:20:41.583 に答える