我正在尝试将整个数组传递给我的函数,但我现在收到错误:
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]);
}
答案 0 :(得分:6)
将数组传递给函数时,不需要[]
之后的数组。只需使用数组的名称即可。
此外,您需要在使用之前定义或声明函数,并且需要#include <stdio.h>
以便编译器知道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]);
}
答案 1 :(得分:3)
这里要提到的不止一点,
首先,包含必需的头文件,其中包含您将要使用的库函数的函数签名。
其次,要么转发声明函数原型,要么在使用前定义函数。请注意,古代隐式声明规则已从C标准中正式删除。
第三,改变
method(myArray[]);
到
method(myArray);
因为数组名称本身为您提供了数组的基址,这基本上是您需要传递的。