2012-10-25 89 views
1

我不得不問這個問題令人難以置信的愚蠢,但我該如何處理返回值?如何處理Arduino返回

例如,我有這樣的代碼:

int x = 0; 

void setup(){ 
    Serial.begin(9600); 
} 

void loop(){ 
    int y = calc(x); 
    Serial.println(y); 

    delay(500); 
} 

int calc(int nmbr){ 
int i = nmbr + 1; 
return i; 
} 

如何使其成爲X上升?基本上,我想看看它走0,1,2,3,4,5等,等等我知道這很容易做一個for(),但我想知道如何處理返回值,而不是如何處理創建一個計數器。

解決方案可能非常簡單,當我看到它時我會面對面的,但過去30分鐘我一直在看我的屏幕,而我完全停留在此。

+2

如何處理返回值是什麼意思? – iabdalkader

+0

好吧,我該如何改變x使它增加?基本上,x應該改變爲calc()的返回值() – Cleverbird

回答

2

你不改變x,你改變另一個變量nmbr,因爲你傳遞x的價值,那就是x副本,您可以按引用傳遞,或因爲x是全球性的,你可以只是這樣做:

int calc() { 
return x++; 
} 

不過說真的,你應該只使用一個for循環:)

int x; 
for (x=0; x<10; x++) { 
    Serial.println(x); 
} 
+0

我知道,我只是將這個小小的代碼作爲一個例子。而且我知道解決方案很容易,而且我確實現在面臨着...謝謝你,好先生或女士! – Cleverbird

+0

不客氣:) – iabdalkader

0

嘗試:

int y = 0; 

void setup(){ 
    Serial.begin(9600); 
} 

void loop(){ 
    y = calc(y); 
    Serial.println(y); 

    delay(500); 
} 

int calc(int nmbr){ 
int i = nmbr + 1; 
return i; 
} 
1

Mux的回答很好。我會添加更多的品種。首先,剛分配函數的返回值回x

loop() { 
    x = calc(x); 
    Serial.println(x); 
} 

二,使用呼叫通過引用,在這裏你將指針傳遞給x代替x值。

void loop() { 
    int y = calc(&x); 
    Serial.println(y); 
} 

int calc(int *nmbr) { 
    *nmbr++; 
} 

這將真正對你有好處閱讀"The C Programming Language"獲得語言的竅門和它的可能性。祝你好運:-)

乾杯,

0

,而不用聲明爲INT的,你可以有靜態聲明INT。

#include <stdio.h> 


void func() { 
    static int x = 0; // x is initialized only once across three calls of func() and x will get incremented three 
          //times after all the three calls. i.e x will be 2 finally 
    printf("%d\n", x); // outputs the value of x 
    x = x + 1; 
} 

int main() { //int argc, char *argv[] inside the main is optional in the particular program 
    func(); // prints 0 
    func(); // prints 1 
    func(); // prints 2 
    return 0; 
}