2017-04-04 14 views
-3

Cプログラミングに達する警告:コントロールは非void型関数の終わり[-Wreturn型]}

コード:

struct battleship makeShip (int size, int pos) 
{ 
    int i, j; 
    int* body; 
    body = (int*) malloc (size * sizeof(int)); 
    for (i = pos; i < (pos + size); i++){ 
     for (j=0; j < size; j++){ 
      body[j] = 1; 
     } 
    } 
} 

ない私は試してみて、リターンを追加した場合、エラーの原因を確認してください0 ;私は得る:

エラー:互換性のない結果を持つ関数から 'int'を返す タイプ 'struct battleship' return 0;

+0

:この場合
、あなたの関数は、で始まる必要があります。関数型がintの場合、intだけを返すことができます。あなたが他のタイプを使用する場合、それは文句を言うでしょう。 – LethalProgrammer

+0

あなたの関数で定義されている "戦艦の戦艦"変数がないので、なぜあなたが1つを返すのかはわかりません –

答えて

0

あなたは戦艦の構造を返さなければなりません。あなたが何かを返す必要がない場合は

、ちょうど変更:

struct battleship 

で:

void 

機能を意味することは何も返しません。

ここで何らかのメモリを割り当てることを考慮すると、おそらくintの型へのポインタであるbodyのアドレスを返すことになります。あなたが別の戻り値の型を持つことはできません

int * makeShip(int size, int pos) 
0
struct battleship makeShip (int size, int pos) 
{ 
    int i, j; 
    int* body; 
    body = (int*) malloc (size * sizeof(int)); 
    for (i = pos; i < (pos + size); i++){ 
     for (j=0; j < size; j++){ 
      body[j] = 1; 
     } 
    } 
    struct battleship ship; 
    ship.body = body; 
    ship.size = size; 
    ship.pos = pos; 
    return ship; 

}

関連する問題