用于检查值是否在数组中的函数

时间:2016-03-30 14:58:40

标签: c arrays function

我可以在不使用函数的情况下使代码工作,但因为它是我收到此错误消息:

  

错误:在' int'
之前的预期表达式   is_authorized(x,int * authPorts [N]);

通过对此进行研究,我认为将数组传递给函数可能会有所作为,但在任何地方我发现看起来可能相关的东西都有太多的信息,我不明白我使用它

这是我的代码:

#include <stdio.h>
#define N 8

int is_authorized(int port,int *auth_ports[]);

int main(void) {  
  int x = 73;

  /* authorised ports: */
  int authPorts[N] = {20,73,60,80,212,434,2211,434};

  is_authorized(x,int *authPorts[N]);

  return 0;
}

int is_authorized(int port, int *auth_ports[]){
  int i;
  for (i = 0; i < N; i++){                    
      if (port == *auth_ports[i])
         printf("1");
      else
          printf("0");}
}

3 个答案:

答案 0 :(得分:2)

您正在尝试在参数内定义数组。

您可以详细了解如何将数组传递给函数here

要回答您的问题,请转到

is_authorized(x, authPorts);

答案 1 :(得分:0)

你的数组不需要asterix(*),每当你想将一个数组传递给一个函数时,编译器就会复制数组的地址并将它发送给函数,而不需要告诉他这个函数。被称为路过的人。

答案 2 :(得分:-1)

固定代码

#include <stdio.h>
#define N 8

int is_authorized(int port,int *auth_ports);



int main(void) {

  int x = 73;

  /* authorised ports: */
  int authPorts[N] = {20,73,60,80,212,434,2211,434};


   is_authorized(x, authPorts);

  return 0;
}

int is_authorized(int port, int *auth_ports){
  int i;
  for (i = 0; i < N; i++){                    
      if (port == auth_ports[i])
         printf("1");
      else
          printf("0");}
  return 0;
}