2015-11-03 70 views
-2

我想传递一个整个数组到我的功能,但我正在逐渐目前正在错误:传递整个数组作为参数成函数

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

预先声明可能有助于 –

+0

这是正确的方式,'方法(myarray的);'删除 –

+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]); 
} 
+0

好吧,我会试试谢谢你 – user3379139

3

超过这里要提到一点,

  • 首先,包括其中包含你要使用的库函数的函数签名所需的头文件。其次,在使用前要么声明函数原型,要么定义函数。请注意,隐含声明规则的古代已从C标准正式废除。

  • 第三,改变

    method(myArray[]); 
    

    method(myArray); 
    

    为数组名本身给你的阵列,它基本上是你需要通过什么样的基址。