【发布时间】:2015-01-13 08:33:59
【问题描述】:
我有一个名为 numbers 的数组,我想测试该数组中是否包含某个数字。
void loop(){
if (arrayIncludeElement(numbers, mynumber)){
// Do something
} else {
// Do something else
}
}
我已经写了一个版本的arrayIncludeElement函数,但它似乎不起作用。
boolean arrayIncludeElement(array, element) {
for (int i = 0; i < sizeof(array); i++) {
if (array[i] == element) {
return true;
}
}
return false;
}
错误消息
- sketch:5:错误:“数组”未在此范围内声明
- sketch:5:错误:“元素”未在此范围内声明
- sketch:5:错误:初始化表达式列表被视为复合 表达
- sketch:3:错误:重新定义“boolean arrayIncludeElement”
- sketch:5: 错误: 'boolean arrayIncludeElement' 先前定义 这里
- sketch.ino:在函数 'void loop()' 中:
- sketch:11: 错误:“arrayIncludeElement”不能用作函数
- sketch.ino:在全球范围内:
- sketch:16:错误:重新定义“boolean arrayIncludeElement”
- sketch:5: 错误: 'boolean arrayIncludeElement' 先前定义 这里
- sketch:16: 错误:“数组”未在此范围内声明
- sketch:16: 错误:“元素”未在此范围内声明
编辑 我将函数更新为此。
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()' 中:
- sketch:8: 错误:'arrayIncludeElement' 未在此范围内声明
- 草图:10:错误:预期的 `;'在“}”标记之前
第 8 行就是这个
if (arrayIncludeElement(numbers, 5){
第 10 行就是这个
} else {
【问题讨论】:
-
你不应该为你的函数参数指定类型吗?
-
另外,
sizeof(array)在您的函数中不起作用——您需要单独传递大小。 -
sizeof(array)工作正常。问题显然是我错过了函数参数的数据类型。 -
不,
sizeof(array)给出了指向int(或任何你的数组)的指针中的字节数。它提供了一些东西,但不是正确的东西。 -
好的。但是我不知道我的数组的长度,有没有别的办法?