类型" int"的参数与" int"

时间:2017-05-11 12:37:03

标签: c++

编程很新,并被要求在程序代码中找到错误作为教程。在尝试解决问题的同时,我一直在努力解决问题。类型' int'的参数与' int'类型的参数不兼容"对于标记为传递单个元素的行。 Haven没有了解指针,也没有真正理解函数是如何工作的,所以其他地方可能会有错误。

#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] << " " ;
}

3 个答案:

答案 0 :(得分:0)

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

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

希望这有助于您了解intint []之间的区别。

答案 1 :(得分:0)

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

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

void functionA ( int num )

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

答案 2 :(得分:0)

for ( i=0; i<10; i++ )
        functionA ( numbers[i] ) ;

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

void functionA ( int num[] )

functionA期望整数数组作为输入。你正在传递一个整数,所以它失败了。

我怀疑你的编译器错误不是&#34; int与int&#34;不兼容,但&#34; int与int *&#34;不兼容。 *很重要,因为它指定了一个指针。

根据你要做的事情,你必须改变functionA来取一个int,而不是int [](在这种情况下它打印传递给它的数字),或传递&#34;数字&# 34;而不是&#34;数字[i]&#34;对它进行更改并更改functionA以迭代数组(例如,使用for循环)。