我目前正在尝试传递一个(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])
{
}
答案 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 *,它引用了数组的第一个元素,第二个参数是这个数组的大小。