ポインタとCの新機能で、プログラムのポインタに構造体の配列のポインタが必要で、このポインタを関数に渡すことができます。Cの構造体の配列へのポインタを宣言する方法
構造体配列型のポインタを宣言する正しい方法と、そのようなポインタをとることができる関数のパラメータは何ですか?
これは私の試みです:
#define HAND_SIZE 5
struct Card {
char suit;
char face;
};
void printHandResults(struct Card *hand[HAND_SIZE]);
int main(void)
{
struct Card hand[HAND_SIZE];
struct Card (*handPtr)[HAND_SIZE]; //Correct way to declare?
handPtr = &hand;
...
printHandResults(handPtr);
}
void printHandResults(struct Card *hand[HAND_SIZE]) {
...
}
そして、これは私が手に警告です:
warning: incompatible pointer types passing 'struct Card (*)[5]' to parameter of type 'struct Card **' [-Wincompatible-pointer-types]
私はポインタが異なったタイプですが、私はそれを正しく設定する方法を見つけ出すように見えるカント理解。
私が誰かが正しい方向にポインタを向けることができれば感謝します。
配列は関数に渡されるときに自動的にポインタになりますが、別の変数は必要ありません。 – Barmar
'struct card * hand [HAND_SIZE]'は、配列へのポインタではなく、ポインタの配列です。 – Barmar
あなたのやり方でhandPtrはポインタの配列です。なぜあなたはprintHandResultsに手を渡していませんか? –