2012-01-04 16 views
-1

このコードで何が問題になっていますか? は、私はエラー「セマンティック問題を 『カード[3]』互換性のない型のパラメータに渡すと 『カード』」を取得あなたは、カードの配列あるdeckを、渡すためにしようとしている互換性のないデータ

#include <stdio.h> 

typedef struct { 
    char *name; 
    int sequence 
} cards; 

void print_deck(cards data); 

int main (int argc, const char * argv[]) 
{ 

    cards deck[] = 
    { 
     {"Heart", 1}, 
     {"Arrow", 2}, 
     {"Spatiq", 3} 
    }; 

    print_deck(deck); 

    return 0; 
} 

void print_deck(cards data) { 

} 

答えて

4

へ関数cardsのパラメータを使用します。それらは2つの異なるタイプです。おそらくprint_deck関数のパラメータのタイプを変更したいと思うでしょう。また、実際には単一のカードなので、cardsの名前を変更することをお勧めします。 print_deck()cards型を得ることを期待しながら

+0

のようなものを使用しますか? – pr1m3x

+0

@ user1089415: 'void print_deck(cards data [])'のようなものが必要ですが、配列の長さはわかりません。ターミネーター値を持たせたり、長さなどの値を渡したい場合があります。 –

+0

*「タイプカードの機能を持つメソッド」*は意味をなさない。私はお勧めします* "パラメータタイプのカードを持つ関数" * – Pubby

1

deckは、それらが互換性のない型で、cardsの配列です。あなたはおそらくとしてprint_deck()を宣言したい

print_deck(cards deck[],int size) [サイズが示す場所のカードのあなたの配列がどのように大きい]

0

あなたの関数はただ1枚のカードではなく、配列を受信するためのインタフェースを備えています。その場合、print_deck()の定義はどのように見えるのですか?print_deck(deck[0]);

関連する問題