Новый для указателей и C и для моей программы нужен указатель на массив структур и возможность передать этот указатель на функцию.Как объявить указатель на массив структур в C
Каков правильный способ объявить указатель на тип массива struct и какой должен быть параметр моей функции, который может принимать такой указатель?
Это моя попытка:
#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? –