Odwoływanie do pól struktury

Odwoływanie do pól struktury
K7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
0

Witam,
Mam takie pytanko:
jest np taka struktura

Kopiuj
typedef struct{
char autor[50];
char tytul[50];

}rozglosnia;

rozglosnia tab[10];

kiedy odwołuję się do pól tak?

Kopiuj
tab.autor;

a kiedy odwołuję się tak?

Kopiuj
tab->autor;

jakie są różnice. mogliście by pomóc?

PR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 316
2

1 sposób jak masz zadeklarowaną "normalnie", drugi jak jest jako wskaźnik

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
2

Ten zapis:

Kopiuj
tab->autor;

jest równoznaczny z tym:

Kopiuj
(*tab).autor;

Co oznacza że odwołujesz się do tego na co wskazuje wskaźnik a następnie pobierasz interesujące Cię pole.

K7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
0

Czyli o to chodzi?

Kopiuj
void funkcja(rozglosnia *zmienna){
zmienna->autor="Jan";
}
Kopiuj
void funkcja(rozglosnia zmienna){
zmienna.autor="Jan";
}
PR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 316
0

Tak

K7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
0

a jeśli jest tak, że parametrem funkcji jest tablica strukturalna, to robię tak?

Kopiuj
void funkcja(rozglosnia tab[]){
tab[1]->autor="Jan";

}

bo to chyba tablica sama w sobie jest wskaźnikiem

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12316
0

Zasada jest ta sama – dla tablicy struktur ., a dla tablicy pointerów na struktury -> lub (*)..

kamilm758 napisał(a):

bo to chyba tablica sama w sobie jest wskaźnikiem

Nie zgaduj – RTFM. ;)

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.