我有一个名为number的数组,我想测试该数组中是否包含了某个数字。
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;
}错误消息
编辑I将函数更新为此。
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;
}但现在我发现了这个错误
第8行是这样
if (arrayIncludeElement(numbers, 5){第10行是这样
} else {发布于 2015-01-13 08:42:49
您没有提到该参数的数据类型。你得提一下论点。然后,您必须声明函数原型。
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()之前。
发布于 2015-01-13 09:15:09
看来这个问题越来越接近How do I determine the size of my array in C?了
但是,在一般情况下,您确实必须提供数组的长度,或者使用一些保护元素(比如以空结尾的字符串)。在调用链的某个地方,你必须知道数组的大小,不是吗?
举一个很小的例子来说明sizeof()为什么可能不正确:
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
https://stackoverflow.com/questions/27917832
复制相似问题