Pole a ukazatele v C

HackForum

Pole a ukazatele v C#
Ahoj. Nevím, jestli je tohle správné místo pro podobné dotazy, ale pár lidí, co píšou v céčku se tady určitě najde.

Po určité době ve vysokoúrovňových jazycích jsem si říkal, že nebude od věci zkusit i něco nízkoúrovňovějšího a pustil jsem se do studia céčka. Hned na začátku mi ale některé věci připadají trochu matoucí. Chci jenom vědět, jestli to má nějaký hlubší důvod, nebo jestli je mám jednoduše přijmout jako fakt a nezabývat se tím, ve smyslu "prostě to tak je".


Pokud je pole ve skutečnosti ukazatel na první prvek v poli, proč potom &array vrací stejnou adresu?

int array[3] = {1, 2, 3};

printf("&array[0] %p\n", &array[0]); // 23fe30
printf("array %p\n", array); // 23fe30 - ok
printf("&array %p\n", &array); // 23fe30 - ?


Pokud je v tom případě ukazatel na pole ve skutečnosti ukazatel na ukazatel, proč se pak zapisuje jako *ukazatel místo jako **ukazatel?

int value = 123;
int *pvalue = &value;
int **ppvalue = &pvalue; // ukazatel na ukazatel, ** ok

int array[3] = {1, 2, 3};
int *parray = array; // ukazatel na ukazatel, * ?


Nebo ve skutečnosti pole jenom sdílí některé vnější znaky ukazatelů, ale skutečný ukazatel to není?

Předem díky za objasnění.

(odpovědět)
Hrobokop | 185.100.87.*6.2.2019 7:30
re: Pole a ukazatele v C#
Odpověď jsem našel tady:

[link]
(odpovědět)
Hrobokop | 185.220.101.*9.2.2019 4:52

Zpět
 
 
 

 
BBCode