How to check if element is included in array with arduino?
我有一个称为数字的数组,我想测试该数组中是否包含某个数字。
1 2 3 4 5 6 7 | void loop(){ if (arrayIncludeElement(numbers, mynumber)){ // Do something } else { // Do something else } } |
我已经编写了arrayIncludeElement函数的一个版本,但是它似乎不起作用。
1 2 3 4 5 6 7 8 | boolean arrayIncludeElement(array, element) { for (int i = 0; i < sizeof(array); i++) { if (array[i] == element) { return true; } } return false; } |
错误消息
- 草图:5:错误:未在此范围中声明\\'array \\'
- 草图:5:错误:未在此范围中声明\\'element \\'
-
草图:5:错误:初始化器表达式列表被视为复合
表达 - 草图:3:错误:重新定义\\'boolean arrayIncludeElement \\'
-
草图:5:错误:先前定义的\\'boolean arrayIncludeElement \\'
这里 - sketch.ino:在函数\\'void loop()\\'中:
- 草图:11:错误:\\'arrayIncludeElement \\'不能用作函数
- sketch.ino:在全球范围内:
- 草图:16:错误:重新定义\\'boolean arrayIncludeElement \\'
-
草图:5:错误:先前定义的\\'boolean arrayIncludeElement \\'
这里 - 草图:16:错误:此范围中未声明\\'array \\'
- 草图:16:错误:未在此范围中声明\\'element \\'
编辑
我将功能更新为此。
1 2 3 4 5 6 7 8 9 | 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 loop()\\'中:
- 草图:8:错误:此范围中未声明\\'arrayIncludeElement \\'
- 草图:10:错误:\\'} \\'标记之前的预期`; \\'
第8行是这个
1 | if (arrayIncludeElement(numbers, 5){ |
第10行是这个
1 | } else { |
您没有提到该参数的数据类型。您必须提及论点。
然后,您必须声明函数原型。
1 2 3 4 5 6 7 8 9 | 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所说的那样,将数组中的元素编号作为函数参数传递。
不要使用sizeof。
然后必须在使用函数之前放置函数声明。因此在这里,函数原型在函数
之前
似乎这个问题越来越接近如何确定C语言中数组的大小?
但是,在通常情况下,您确实必须提供数组的长度或使用一些保护元素(例如以空字符结尾的字符串)。在调用链的某个地方,您必须知道数组的大小,不是吗?
一个小例子来说明为什么sizeof()可能不正确:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
在我的(64位)计算机上打印