0

在过去的一个小时左右,我一直在摆弄我的代码,但我似乎无法让它按照我想要的方式工作。我一直在阅读有关数组是固定状态的想法,但老实说,我只是从这个小实验中筋疲力尽,非常感谢一些帮助。

基本上我想要做的是获取我声明的三个温度传感器读数并将它们集中到一个数组中。从那时起,我希望能够增加数组中每个变量的值,具体取决于用户选择的当前通道。

因此,如果用户在通道 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 回答
0

您在这里被“按值传递”和“按引用传递”固定。@icktoofay 的答案是正确的。他用“按引用传递”替换了您的“按值传递”。

于 2013-03-20T05:23:36.727 回答