用于检查数组的所有元素的函数

时间:2017-01-15 13:16:22

标签: c arrays function

我想创建一个函数来检查数组的所有元素。但是如何正确地将数组作为函数的参数传递?我试图传递一个指针,但它不起作用,编译器甚至不想编译该代码。我究竟做错了什么?请帮忙!

#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
     ^

1 个答案:

答案 0 :(得分:4)

您需要以

形式调用该函数

i = iseven(A);

使用i = iseven(*A);意味着您要取消引用地址A的值并传递它,这实际上意味着您将数组的第一个元素传递给函数。

这就是编译器抱怨函数在期待int

时收到int*的原因