Wskaźniki do struktury w funkcji

Wskaźniki do struktury w funkcji
V3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Witam pisząc program napotkałem pewien problem:
Otóż mam struktury:

Kopiuj
struct person_inf   {
	char name[30];
	char surname[40];
	int age;        
};

struct basketballer   {
	struct person_inf player_inf;
	int throws_2;
	int hits_2;
	int assist;
	int faul;  
	float efficienty;
}; 

Chce napisać która jako argument przyjmuje wskaźnik do tablicy struktur a następnie wyzeruje wartości.
A wygląda ona tak:

Kopiuj
void easer_players (struct basketballer (* player) [] , int n)
{
	for(int i = 1 ; i <= n ; i++,player++)
	{
		player->player_inf.name = player->player_inf.surname = ' ';
		player->player_inf.age = player->throws_2 = player->hits_2 = player->assist = player->faul = player->efficienty = 0;
		
	}
} 

Jednak MS Visual wywala mi błędy podczas kompilacji że kompilator nie zna rozmiaru struktury przy inkrementacji wskaźnika

'basketballer (*)[]' : unknown size

Dodatkowo mam coś nie tak przy przypisywaniu wartości do pól struktury:

: left of '.player_inf' must have class/struct/union
type is 'basketballer []'

Z góry dziękuje Wam za pomoc i pozdrawiam.

msm
  • Rejestracja: dni
  • Ostatnio: dni
1

Nie mogę przetestować z powodu braku kompilatora chwilowo, ale:

Kopiuj
void easer_players (struct basketballer *player, int n)
{
    memset(player, 0, sizeof(basketballer) * n);
} 
Flaker
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
1

Tablice przekazywane są do funkcji automatycznie przez wskaźnik, i nie trzeba kombinować z wyciąganiem wskaźnika do nich.

Kopiuj
void easer_players (struct basketballer* player , int n)

Ponadto "zerowanie" name'a i surname'a w Twoim kodzie jest zupełną abstrakcją. Przypisanie ' ' nie przejdzie z racji niezgodności typów.
Już prędzej " " miałoby sens, ale tylko gdyby w strukturze znajdowało się char*, a nie tablica.
W tej sytuacji strcpy albo memset.

V3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Dziękuje za pomoc ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.