首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查元素是否包含在arduino数组中?

如何检查元素是否包含在arduino数组中?
EN

Stack Overflow用户
提问于 2015-01-13 08:33:59
回答 2查看 17.9K关注 0票数 1

我有一个名为number的数组,我想测试该数组中是否包含了某个数字。

代码语言:javascript
复制
void loop(){
  if (arrayIncludeElement(numbers, mynumber)){
    // Do something
  } else {
    // Do something else
  }
}

我已经编写了arrayIncludeElement函数的一个版本,但它似乎不起作用。

代码语言:javascript
复制
boolean arrayIncludeElement(array, element) {
  for (int i = 0; i < sizeof(array); i++) {
    if (array[i] == element) {
      return true;
    }
  }
  return false;
}

错误消息

  • 草图:5:错误:“数组”未在此范围内声明
  • 草图:5:错误:“元素”未在此范围内声明
  • 草图:5:错误:初始化表达式列表被视为复合表达式
  • 草图:3:错误:“布尔arrayIncludeElement”的重新定义
  • 草图:5:错误:以前在这里定义的“布尔arrayIncludeElement”
  • sketch.ino:在函数'void ()‘中:
  • 草图:11:错误:“arrayIncludeElement”不能用作函数
  • sketch.ino:在全球范围:
  • 草图:16:错误:“布尔arrayIncludeElement”的重新定义
  • 草图:5:错误:以前在这里定义的“布尔arrayIncludeElement”
  • 草图:16:错误:“数组”未在此范围内声明
  • 草图:16:错误:“元素”未在此范围内声明

编辑I将函数更新为此。

代码语言:javascript
复制
boolean arrayIncludeElement(int array[], int element);
boolean arrayIncludeElement(int array[], int element) {
  for (int i = 0; i < (sizeof(array)/4); i++) {
    if (array[i] == element) {
      return true;
    }
  }
  return false;
}

但现在我发现了这个错误

  • sketch.ino:在函数'void ()‘中:
  • 草图:8:错误:“arrayIncludeElement”未在此范围内声明
  • 示意图:10:错误:预期的‘;’之前'}‘令牌

第8行是这样

代码语言:javascript
复制
if (arrayIncludeElement(numbers, 5){

第10行是这样

代码语言:javascript
复制
} else {
EN

回答 2

Stack Overflow用户

发布于 2015-01-13 08:42:49

您没有提到该参数的数据类型。你得提一下论点。然后,您必须声明函数原型。

代码语言:javascript
复制
 boolean arrayIncludeElement(int array[], int element);
 boolean arrayIncludeElement(int array[], int element) {
 for (int i = 0; i < max; i++) {
      if (array[i] == element) {
          return true;
      }
    }
  return false;
 }

编辑:正如Dmitri所说,将数组中的no元素作为函数参数传递。不要用尺寸。

然后,函数的声明,必须放在它的使用之前。所以在这里,函数原型在函数void loop()之前。

票数 1
EN

Stack Overflow用户

发布于 2015-01-13 09:15:09

看来这个问题越来越接近How do I determine the size of my array in C?

但是,在一般情况下,您确实必须提供数组的长度,或者使用一些保护元素(比如以空结尾的字符串)。在调用链的某个地方,你必须知道数组的大小,不是吗?

举一个很小的例子来说明sizeof()为什么可能不正确:

代码语言:javascript
复制
int size_test(char b[])
{
    char a[10];
    char foo[] = {'a', 'b', 'c', 'd', 'e'};
    char *bar = malloc(20);
    printf("sizeof a = %ld, sizeof b = %ld, sizeof foo = %ld, sizeof bar = %ld\n", sizeof(a), sizeof(b), sizeof(foo), sizeof(bar));
}
int main()
{
    char b[12];
    size_test(b);
}

在我的(64位)机器上打印

sizeof a = 10, sizeof b = 8, sizeof foo = 5, sizeof bar = 8

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27917832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档