极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11504|回复: 6

请教下子函数应该怎么写啊,传递变量有什么要求

[复制链接]
发表于 2014-1-9 19:41:39 | 显示全部楼层 |阅读模式
下面的程序有什么问题呢,为什么编译不通过?
int i = 0;

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

void loop()
{
  catch();
  Serial.println(i);
  delay(1000);
}

int catch(int i)
{
  i++;
}
回复

使用道具 举报

 楼主| 发表于 2014-1-9 19:50:05 | 显示全部楼层
错误信息:











sketch_jan09a:4: error: expected unqualified-id before 'catch'
sketch_jan09a.ino: In function 'void loop()':
sketch_jan09a:10: error: expected primary-expression before 'catch'
sketch_jan09a:10: error: expected `;' before 'catch'
sketch_jan09a.ino: At global scope:
sketch_jan09a:15: error: expected unqualified-id before 'catch'
回复 支持 反对

使用道具 举报

发表于 2014-1-9 20:29:55 | 显示全部楼层
  1. int i = 0;

  2. void setup()
  3. {
  4.   Serial.begin(9600);
  5. }

  6. void loop()
  7. {
  8.   test();
  9.   Serial.println(i);
  10.   delay(1000);
  11. }

  12. void test()
  13. {
  14.   i++;
  15. }
复制代码


编译通过,catch似乎不能作为函数名
回复 支持 反对

使用道具 举报

发表于 2014-1-9 20:34:09 | 显示全部楼层
本帖最后由 laofuz1024 于 2014-1-9 20:47 编辑

catch 函数的定义

是有一个参数,是int 类型的变量

还有一个返回值,是返回 int 类型的变量,但是catch函数定义有返回值,内部就没返回语句是不对


而你在loop调用catch函数时,没有传参数。

根据你的函数来看,你想实现的功能,没必要这个函数

而我对C语言的了解,函数中 形参是基本类型的,那是值传递,不是地址传递
在函数内部对i值的改变,不影响函数外部的值 ,也就是说,catch函数外,i值都是0
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-9 20:49:08 | 显示全部楼层
laofuz1024 发表于 2014-1-9 20:34
catch 函数的定义

是有一个参数,是int 类型的变量

本身就是不明白怎么写子函数所以做的试验程序,功能当然比较简单。
呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-9 20:52:05 | 显示全部楼层
SaorUicnext 发表于 2014-1-9 20:29
int i = 0;

void setup()

太谢谢了。

能再解释下参数传递吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-9 21:04:19 | 显示全部楼层
已经解决了,多谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 19:25 , Processed in 0.037337 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表