对于不得不提出这个问题我感到非常愚蠢,但我如何使用返回值呢?
例如,我有这段代码:
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分钟我一直在看我的屏幕而且我完全坚持这个。
答案 0 :(得分:2)
您没有更改x
,而是要更改另一个变量nmbr
,因为您按值传递了x
,这是x
的副本,您可以通过引用传递它,或者因为x
是全局的,您可以这样做:
int calc() {
return x++;
}
但实际上,你应该只使用for循环:)
int x;
for (x=0; x<10; x++) {
Serial.println(x);
}
答案 1 :(得分:1)
Mux的答案很好。我会添加更多品种。首先,只需将函数返回值分配回x
:
loop() {
x = calc( x );
Serial.println( x );
}
其次,使用call-by-reference,将指针传递给x
而不是x
的值。
void loop() {
int y = calc( &x );
Serial.println( y );
}
int calc( int *nmbr ) {
*nmbr++;
}
阅读"The C Programming Language"来掌握语言及其可能性,这对你有好处。祝你好运: - )
干杯,
答案 2 :(得分: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;
}
答案 3 :(得分:0)
您可以使用Declare static 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;
}