2013-03-20 77 views
0

我一直在用我的代碼在最後一個小時左右擺弄,但似乎無法按照我想要的方式工作。我一直在閱讀關於數組爲固定狀態的想法,但說實話,我只是從這個小實驗中被燒掉了,並且非常感謝一些幫助。如何增加數組中的變量的值(C編程)

基本上我想要做的是拿我的三個溫度傳感器讀數,我已經宣佈並將它們組成一個數組。從那一點來說,我希望能夠增加數組中每個相應變量的值,具體取決於用戶選擇的當前通道。

因此,如果用戶在通道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 
+0

tl; dr如果你想讓別人看看它,請刪除不必要的問題。 – Shoe 2013-03-20 04:21:15

回答

4

您的數組只包含在創建數組時的變量值的副本。當你改變這個數組時,你只是在改變它,而不是從中複製值的變量。你可以達到你想要什麼通過使陣列做不抱溫度,但是指針溫度:

temperature_t *readings[] = {&temp1, &temp2, &temp3}; 
// ...later... 
(*readings[channel])++; 
+0

我試過你的方法了,當我按r或f時,我仍然沒有得到任何改變。 – 2013-03-20 12:39:45

+0

@ user2189274:我剛剛意識到我有一個小錯字,影響相當大!請看我編輯的答案。 – icktoofay 2013-03-21 05:21:19

0

你被固定「按值傳遞」和「按引用傳遞」在這裏。 @icktoofay的回答是正確的。他用'通過引用'來替換你的'按價值傳遞'。