C 将整个数组作为参数传递给函数
我试图将整个数组传递到my函数中,但我当前遇到错误: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
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);