数组未传递给Function Method

时间:2014-10-25 20:00:03

标签: c arrays function for-loop

我目前正在尝试传递一个(values [3])数组,它的前3个值包含用户输入。但是,我得到错误"期望int *但是参数是int"的类型。我已经尝试传递给method1,没有使用值数组中的前三个位置进行迭代,但是就我设法尝试修复它而言,任何帮助将不胜感激!

int main(void)
{
    int i;
    int values[3];

    printf("Enter three consecutive numbers (With spaces between)");
    scanf("%d %d %d",&values[0],&values[1],&values[2]);

    for(i=0;i<3;i++)
    method1(values[i]);
}

int method1(int values[3])
{

}

2 个答案:

答案 0 :(得分:2)

您无法将数组作为数组传递给函数 - 它会衰减&#34;指针。您的代码存在两个问题:

  • 在调用时没有method1的前向声明,
  • 您正在传递values[i]标量值代替数组。

前向声明是必要的,否则编译器会认为method1返回int,这不是真的。在main

之前添加此行
int method1(int values[]);

您也可以将method1移到main之上以解决此问题,而无需提供转发声明。此外,方括号内的3不是必需的,因为数组无论如何都像指针一样传递。

如果要传递整个数组,请传递values。当然,i变得不必要了:

int res = method1(values);

答案 1 :(得分:0)

#include <stdio.h>
int main(void)
{
    int i;
    int values[3];

    printf("Enter three consecutive numbers (With spaces between)");
    scanf("%d %d %d",&values[0],&values[1],&values[2]);

    method1(values, 3);    
    getchar();
    getchar();
    return 0;
}

int method1(int* values, int size)
{
    int i;
    for(i=0; i<size; i++){
        printf("%d ", values[i]);
    }
    return 1;
}

在C中,数组通过引用传递,你可以看到method1的第一个参数是int *,它引用了数组的第一个元素,第二个参数是这个数组的大小。