sizeof i wielkosc wskaznika

0

Czesc stworzylem strukture typu
sturct Rolki
{
int rodzaj;
Rolki *A;
Rolki *B;
Rolki *C;
Rolki *D;
}

i jest to dla mnie bardzo wazne bym mogl odnosic sie do rolek A B C D za pomoca zmiennej na przyklad

Rolki fajne
.....
fajne->(A+sizeof(*Rolki)*2)->rodzaj

tyle ze to co napisalem nie jest do konca poprawnie ale mysle ze odnosi kwintesencje mojego zapytania
tzn ze pomoca liczby 2 odnioslem sie do fajne->C->rodzaj
czy da sie to jakos zrobic za pomoca sizeof jesli nie to jak :) dzieki i pozdrowcie

0

Pytanie brzmi tylko PO CO?
Nie możesz po prostu ładnie i czytelnie odnosić się np.

Rolki fajne;
(fajne.A)->rodzaj;

?
Poza tym to troche nielogiczne żeby Rolki składały się ze wskaźników na rolki. Opisz moze co chcesz osiagnać, bo możliwe że źle to sobie obmyśliłes.

0

hehe faktycznie rolki to zly przyklad :D ale na przyklad gdyby zamiast rolek mialy to byc kafelki po ktorych chodzimy i kazda z tych kafelek ma po 4 stronach tez kafelke to mozna by z tych kafelek stworzyc swego rodzaju labirynt,

struct Rolki
{
Rolki *R0;
Rolki *R1;
Rolki *R2;
Rolki *R3;
}

 R0

R1 R R3
R2

zalezy mi na tym by odnoszac sie do konkretnego elementu z mojej struktury
czyli do konkretnej na przyklad drugiej rolki R2 podajac takie cos fajna->R0 + przesuniecie w strukturze czyli w naszym przypadku 2

0

Ok już rozumiem o co ci chodzi. Ale znacznie ładnie byłoby to opakować w klasę i zrobić odpowiednie metody ;) Np metodę

Rolki* zwrocRolke(int);

Która zwróci wskaźnik do Rolki numer X przechowywanej w danej rolce.
Będzie to ładniejsze i pewniejsze ;)

0

niby tak ale nie jesli to zadanie optymalizacyjne sam tez tak na to patrze :) ale moj gosciu od algorytmow jak by zobaczyl klasy i metody to by odjechal hehe ;D a cala czarna robote kombinowania nad algorytmem juz w zasadzie zrobilem teraz tylko sobie klikam :) ale przydala by mi sie taka wiedza wiec w jaki sposob mogl bym opakowac to w jednej/ dwoch linijkach :)?

0

Zbędna kombinacja, ale tak, da się.

Rolki fajne;
(*(&fajne+sizeof(Rolki*)*X))->rodzaj;

(pisane z palca, ale chyba zadziała)
Coś takiego powinno zwrócić to czego oczekujesz, czyli rodzaj X tych rolek zawartych w fajne.
Tylko ze cóż ci po takim zapisie w jakiejś implementacji jeśli tego nikt potem nie odczyta? :P

0

a no bo algorytmy nie sa do czytania tylko do dzialania hehe ;)
dzieki jednej takiej linijce wlasnie zaoszczedze 123213123213 ifow :D a tak doslowniej to przynajmniej 4 wiecj moim zdaniem lepiej ladnie zakometowac taka linijke i uzyc jej kilka razy niz pozniej powielac rzedy ifow jako ze wszystko zorganizowalem na konkretnych flagach i zastosowalem ladny rowniez jednolinioowy sposob ich obliczania to tez taki system bardzo skroci mi prace :) co mnie jednak ogromnie zdziwilo to fakt ze to co napisales wyzej nie zadzialalo :) przyjzalem sie dokladniej wszystko w mig pojolem i sie okazalo ze zamiast wstawiac w srodku sizeof aby przechodzic po kolejnych wskaznikach do struktury musze dodawac tylko 1 czyli np

((&fajne->R0+1))->rodzaj i teraz otrzymalem R1
(
(&fajne->R0+2))->rodzaj i teraz otrzymalem R2
(*(&fajne->R0+3))->rodzaj i teraz otrzymalem R3

moje pytanie skad to wynika ? i czy jak uruchomie program na innym kompie to nic sie nie zwali ? : o bo caly czas nie bardzo rozumiem czemu on nie dodaje sobie liczby bajtow tylko 1 oznacza dla niego jeden wskaznik a 2 to dwa wskazniki zreszta nawet jak zrobilem fajne->R0 - fajne->R1 to otrzymalem -1 :) strasznie mnie to zastanawia i dziwi :D?

0
Rolki *rolki;
...
rolki->A->B->C->A-> // itd.

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