我想创建一个函数来检查数组的所有元素。但是如何正确地将数组作为函数的参数传递?我试图传递一个指针,但它不起作用,编译器甚至不想编译该代码。我究竟做错了什么?请帮忙!
#include <stdio.h>
#define N 10
int iseven(int *A); // prototype
int main(void)
{
int i;
int A[N]; // array to check
for (i = 0; i < N; i++)
scanf("%d", &A[i]);
i = iseven(*A);
if (i == 1)
printf("All numbers are even!\t\n");
else
printf("Not all numbers are even!\t\n");
return 0;
}
int iseven(int *A)
{
int i;
int flag = 1;
for (i = 0; i < N; i++)
if (((A[i] % 2) == 0) && (A[i] >= 2))
continue;
else
{
flag = 0;
break;
}
return flag;
}
gcc array.c -o array.exe
array.c: In function 'main':
array.c:16:14: warning: passing argument 1 of 'iseven' makes pointer from integer without a cast [-Wint-conversion]
i = iseven(*A);
^
array.c:5:5: note: expected 'int *' but argument is of type 'int'
int iseven(int *A); // array to check
^
答案 0 :(得分:4)
您需要以
形式调用该函数 i = iseven(A);
使用i = iseven(*A);
意味着您要取消引用地址A
的值并传递它,这实际上意味着您将数组的第一个元素传递给函数。
这就是编译器抱怨函数在期待int
int*
的原因