2017-05-11 123 views
1

非常にプログラミングには新しく、チュートリアルとしてプログラムコードでエラーを見つけるよう求められました。それを修正しようとしている間、私は個々の要素を渡してラベル付けされた行に対して、型int型の引数を型int型のパラメータと互換性がないようにし続けました。ポインタについて知りませんでしたし、関数がどのように機能するかを実際には理解していないので、他の場所でエラーが発生する可能性があります。"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] << " " ; 
} 

答えて

0

あなたは、あなたの関数のパラメータはint配列を期待に対し、1つのint値であるnumbers[i]を渡しています。

関数定義をちょうどvoid functionA (int num)に変更し、渡した要素intを出力できるはずです。

希望すると、intint []の違いがわかります。

+0

ああ、ありがとう! – Teh

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

この関数は、intのではなく、単一intの配列を(だけでなく、実際にpointer)かかります。あなたはこれまで宣言と定義で署名を変更する必要があります。

void functionA (int num) 

はまた、あなたがvoid main()としてmainを宣言することに注意してください、それはintを返すように宣言する必要があります。

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

ここでは、numbers配列のi番目の要素をfunctionAに渡しています。 Numbersは整数の配列なので、numbers [i]はintです。

void functionA (int num[]) 

functionAは、入力として整数配列が必要です。 Integerを渡しているので失敗します。

あなたのコンパイラエラーは「intはintと互換性がありませんが、intはint *と互換性がありません」と思われます。 *はポインタを指定するので重要です。

あなたがやろうとしていたことに応じて、int []の代わりにfunctionAを変更するか(渡された数値を出力する)か、 "numbers [i]"をそれに追加し、functionAを変更して配列を繰り返します(forループなど)。

+0

あなたは正しかった、私はラインの最後に*を逃した。ありがとうございました! – Teh

関連する問題