【问题标题】:argument of type "int" incompatible with parameter of type "int"“int”类型的参数与“int”类型的参数不兼容
【发布时间】:2017-05-11 20:42:42
【问题描述】:

对编程非常陌生,并被要求在程序代码中查找错误作为教程。在尝试修复它时,对于标记为传递单个元素的行,我不断收到“'int'类型的参数与'int'类型的参数不兼容”这一行。没有学过指针,也不是很了解函数是怎么工作的,所以其他地方可能会出错。

#include <iostream>
using namespace std;

void functionA ( int num[] ) ;
void functionB ( int newnumbers[] ) ;
void functionC ( int newnumbers[] ) ;

void main ()
{
    int numbers[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } ;
    int i;

    for ( i=0; i<10; i++ )
        functionA ( numbers[i] ) ;          // passing individual elements

    cout << "\n\n" ;
    functionB ( numbers ) ;                 // passing the whole array
    functionC ( numbers ) ;                 // passing the whole array

    cout << "\n\n" ;
}

void functionA ( int num[] )
{
    cout << num << " " ;
}

void functionB ( int newnumbers[] )
{
    for ( int i=0; i<10; i++ )
        newnumbers[i] = newnumbers[i] * 5 ;
}

void functionC ( int newnumbers[] )
{
    for ( int i=0; i<10; i++ )
        cout << newnumbers[i] << " " ;
}

【问题讨论】:

    标签: c++


    【解决方案1】:

    您正在传递numbers[i],这是一个int 值,而您的函数参数需要一个int 数组。

    将函数定义更改为 void functionA ( int num ),您应该能够输出您传递的 int 元素。

    希望这可以帮助您了解intint [] 之间的区别。

    【讨论】:

      【解决方案2】:
      void functionA ( int num[] )
      {
          cout << num << " " ;
      }
      

      此函数采用ints 的数组(嗯,实际上是pointer),而不是单个int。您应该将声明和定义中的签名更改为:

      void functionA ( int num )
      

      另请注意,您将main 声明为void main(),但需要将其声明为返回int

      【讨论】:

        【解决方案3】:
        for ( i=0; i<10; i++ )
                functionA ( numbers[i] ) ;
        

        在这里,您将 numbers 数组中的第 i 个元素传递给 functionA。 Numbers 是一个整数数组,所以 numbers[i] 是一个 int。

        void functionA ( int num[] )
        

        functionA 需要一个整数数组作为输入。你传递的是一个整数,所以它失败了。

        我怀疑您的编译器错误不是“int 与 int 不兼容”,而是“int 与 int* 不兼容”。 * 很重要,因为它表示一个指针。

        根据您要执行的操作,您必须将 functionA 更改为采用 int,而不是 int[](在这种情况下,它会打印传递给它的数字),或者传递“数字”而不是“ numbers[i]" 并更改 functionA 以遍历数组(例如,使用 for 循环)。

        【讨论】:

        • 你是对的,我错过了行尾的 *。谢谢!
        猜你喜欢
        • 2021-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多