Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak działają wskaźniki w tablicy

Marek_Gorecki 06 Wrz 2014 17:05 705 7
  • #1 06 Wrz 2014 17:05
    Marek_Gorecki
    Poziom 16  

    WItam;

    proszę o wyrozumiałość, jestem początkującym i nigdy wcześnie nie używałem tablic.
    Otóż mam takie zmienne:

    char name1[16];
    char name2[16];

    Dostęp przez wskaźniki do tych zmiennych mam banalny bo np.name1 to wskaźnik na początek pierwszego stringa.


    Ale teraz chciałbym te dwie zmienne wcisnąć w tablicę, typu

    char name[2][16];

    Ale tu mam problem, otóż jaki jest wskażnik na pierwszy i drugi string w przypadku tablicy?

    0 7
  • #3 06 Wrz 2014 18:21
    Marek_Gorecki
    Poziom 16  

    Możę źle wytlumaczyłem.

    Jeżeli mam dwu wymiarową tablicę typu
    char name[2][16]

    to jak te zmienne są ulokowane w pamięci i wskażniki do nich.

    Obrazowo czy jest tak:

    x,x+1,x+2,x+3,.....,x+15
    x+16,x+17,x+18,..,x+31

    Czyli inaczej mówiąc czy mam gwarancję że te wskaźniki są układane w poziomie?

    Albo inaczej zadam pytanie czy taka tablica jest zapisana w pamięci zawsze w ten sposób:
    name[0][0],name[0][1],name[0][2],...name[0][15],name[1][0],name[1][1],...name[1][15] ?

    Czy jest na to gwarancja, że tak będzie zawsze?

    0
  • #4 06 Wrz 2014 18:29
    tadzik85
    Poziom 38  

    Nie wskaźniki a dane to po 1.
    I tak będą w ten sposób umieszczone w pamięci.
    Ale to można sprawdzić ot tak w zaledwie minutę.

    0
  • #5 06 Wrz 2014 18:34
    Marek_Gorecki
    Poziom 16  

    To że mozna to sprawdzić w minutę to oczywista oczywistość. Chodzi mi o coś innego o gwarację że tak będzie zawsze, że standard języka to gwarantuje. Co mi z tego że sprawdzę i tak będzie, jeżeli kiedyś kompilator mi to przetłumaczy inaczej i będzie inaczej.

    0
  • Pomocny post
    #6 06 Wrz 2014 18:41
    tadzik85
    Poziom 38  

    Nawet nie miałby powodu zrobić inaczej z wielu powodów.
    Tablica wielowymiarowa jest tak naprawdę tablicą tablic, a więc wszelkie właściwości z tym związane są nadal prawdziwe.

    PS. Była wzmianka o stringu. Trzymanie ich w ten sposób mija się często z optymalnym wykorzystaniem pamięci.

    0
  • Pomocny post
    #7 07 Wrz 2014 13:44
    nsvinc
    Poziom 35  

    To, jak są rozmieszczane tablice w pamięci definiuje standard ANSI C (K&R)
    Jak działają wskaźniki w tablicy
    Kompilatorowi wręcz nie wolno inaczej.

    A co do wskaźników - w K&R2 jest jasno i prosto opisane, jak działają, do czego służą, i co robią...

    0
  • #8 07 Wrz 2014 15:23
    Marek_Gorecki
    Poziom 16  

    Właśnie o to mi chodziło.
    Dzięki nsvinc

    0
  Szukaj w 5mln produktów