Definiowanie wielu obiektów w jednej linii

0

Witam, mam pytanie odnośnie takich definicji:

 int* a[5], b[5], c[5];

Mianowicie, dlaczego jedynie pierwszy obiekt jest tablicą wskaźników do obiektów typu int, a pozostałe dwa są tablicami elementów typu int? Ma to coś wspólnego z własnościami operatora *?
Pozdrawiam.

0

Nie, ma za to duzo wspolnego z glupota programisty. A czemu ktos to zrobil innych typow? Pytaj autora. Po nazwac a, b ciezko sie domyslic o co moze chodzic.

3

Mądrzy ludzi zapisują to tak:

int *a[5], b[5], c[5];

wtedy nawet wizualnie widać że a - tablica wskaźników zaś b - tablica int'ów.
Jeżeli wszystkie mają być tablicami wskaźników to:

int *a[5], *b[5], *c[5];
1

W C deklaracja wskaźników lepiej wygląda przy nazwie (funkcji, zmiennej itd..) aniżeli typu

int *a[5], b[5], c[5]

Zaleca to zarówno CodingStyle Linusa.T jak i
http://pl.wikibooks.org/wiki/C/Wska%C5%BAniki#Operowanie_na_wska.C5.BAnikach dla początkujących.

0

Dziękuję za odpowiedzi. Dopiero się uczę. Przecież nie napisałem takiego programu (i uznałem, że jest on OK), tylko przyszedłem tutaj z pytaniem. Całe zamieszanie przez moją błędną interpretację *. Raz stoi przy typie, a innym razem przy nazwie i nie robi to większej różnicy w funkcjonowaniu programu. Już doczytałem, że odnosi się to wyłącznie do zmiennej. Po prostu z ciekawości chciałem trochę poeksperymentować zanim zacznę rozdział o wskaźnikach, a teraz zabieram się do czytania książki. :)

0

Odnośnie komentarza dot. pierwszej wiadomości:
Czyli w pierszej linii to nie jest operator i druga linia oznacza to samo co pierwsza? Dopiero w trzeciej linijce znak pełni funkcję operatora?

int *p;
int* q;
a = *ip;
1

tak. Pamiętać że drugi wiersz to sabotaż własnej pracy.

1

te pięć zapisów znaczy dokładnie to samo:

int *p;
int* p;
int * p;
int*p;

                   int
*                           p
;

1 użytkowników online, w tym zalogowanych: 0, gości: 1