gpt4 book ai didi

c - 数组未传递给函数方法

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:44 25 4
gpt4 key购买 nike

我目前正在尝试传递一个 (values[3]) 数组,它的前 3 个值包含用户输入。但是,我收到错误“expected int* but argument is type of int”。我尝试使用 values 数组中的前三个位置传递给 method1,但没有迭代“i”,但就我设法修复它而言,我将不胜感激!

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])
{

}

最佳答案

您不能将数组作为数组传递给函数 - 它会“衰减”为指针。您的代码有两个问题:

  • 在调用时没有可见的method1 的前向声明,并且
  • 您正在传递 values[i],这是一个标量值而不是数组。

前向声明是必要的,否则编译器会假定 method1 接受并返回 int,这是不正确的。在 main

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

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

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

int res = method1(values);

关于c - 数组未传递给函数方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26566654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com