Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将整个数组作为参数传递给函数_C_Arrays_Function - Fatal编程技术网

C 将整个数组作为参数传递给函数

C 将整个数组作为参数传递给函数,c,arrays,function,C,Arrays,Function,我试图将整个数组传递到my函数中,但我当前遇到错误: test.c: In function 'main': test.c:4:18: error: expected expression before ']' token method(myArray[]); ^ test.c: At top level: test.c:8:6: warning: conflicting types for 'method' [enabled by default] void me

我试图将整个数组传递到my函数中,但我当前遇到错误:

test.c: In function 'main':
test.c:4:18: error: expected expression before ']' token 
method(myArray[]);
              ^
test.c: At top level:
test.c:8:6: warning: conflicting types for 'method' [enabled by default]
void method(int arr[]){
     ^
test.c:4:3: note: previous implicit declaration of 'method' was here
method(myArray[]);
^
test.c: In function 'method':
test.c:9:3: warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]
printf("DATA: %d",arr[2]);
^
这是我的代码(我尝试执行的简化版本,会引发相同的错误:

int main(){
  int myArray[3];
  myArray[2]=12;
  method(myArray[]);
}

void method(int arr[]){
  printf("DATA: %d",arr[2]);
}

将数组传递给函数时,不需要在其后面加
[]
。只需使用数组的名称即可

此外,在使用函数之前,您需要定义或声明函数,并且需要
#包括
,以便编译器知道
printf
的定义

#include <stdio.h>

void method(int arr[]);

int main(){
  int myArray[3];
  myArray[2]=12;
  method(myArray);
}

void method(int arr[]){
  printf("DATA: %d",arr[2]);
}
#包括
无效法(int-arr[]);
int main(){
int-myArray[3];
myArray[2]=12;
方法(myArray);
}
无效方法(int-arr[]){
printf(“数据:%d”,arr[2]);
}

这里要提到的不止一点

  • 首先,包括所需的头文件,其中包含要使用的库函数的函数签名

  • 第二,要么向前声明函数原型,要么在使用前定义函数。请注意,古老的隐式声明规则已经正式从C标准中删除

  • 第三,改变

    method(myArray[]);
    

    因为数组名本身提供了数组的基址,这基本上是您需要传递的


转发声明可能有帮助这是正确的方法,
方法(myArray);
删除括号当您将其描述为“传递整个数组”时,您在某种意义上认为它是错误的,因为实际上只传递了与整个数组相反的指针。Ddeja vu-两次..必须是“将数组传递到函数”一天。
method(myArray);