Pointeri (pokazivači) - objašenjenje

3

Pointeri (pokazivači) - objašenjenje

offline
  • Pridružio: 19 Maj 2011
  • Poruke: 297

Mozda slika malo rasvetli:



Mala ispravka, posto mozda nije ocigledno na slici. Pokazivac na 32-bitnom programu zauzima 4bajta, tako da sam pokazivac 'q' zauzima 4 celije.
"ABCD" je literalna konstanta dok je 'q' ne-konstantni pokazivac.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 14 Jul 2012
  • Poruke: 51

Napisano: 09 Okt 2013 9:14

Да, слика илуструје да се показивачу q додељује адреса (преписана је адреса).
char* q = "ABCD";
И пошто је ово адреса (стринг) константе, садржај на овој адреси се не може мењати.

А низу znakovi[] се додељују знакови (укључујући и завршни знак '\0'):
char znakovi[] = "ABCD";
Пошто је низ иницијализован знаковима из стринг константе, знакови су преписани из стринг константе у низ и у том низу се наравно могу мењати.

Dopuna: 09 Okt 2013 9:24

Citat:To nije "imenovanje" vec samo "search and replace text" instrukcija za parser.
У праву си то није именовање променљиве већ претпроцесорска "search and replace text" директива, али зашто не именовање константе? Израз име - идентификатор користимо и за константе (на пример терминологија књиге Ласла Крауса).
Зато се и зову симболичке константе, имају име - имају симбол...
Мада примедба је на месту, ради се наравно о томе да константа изгуби име пре него што уопште дође до компајлера.
Citat:A ovo je potencijalno opasno: char *q = "ABCD";
Наравно да је опасно покушавати промену било које константе па и стринг константе. Зато се сугерише да се називи симболичких константи пишу великим словима како би смо их увек у изворном коду програма разликовали од променљивих. Ако желиш можеш допунити тему текстом о непроменљивим показивачима и показивачима на непроменљиве податке.

Dopuna: 09 Okt 2013 21:13

Citat:Ček, ček, jel' to on sam imenovao adresu?
Вредност показивачке променљиве (показивача) је адреса. Показивач показује на податак који се налази на наведеној адреси. Име низа је непроменљиви показивач на податке оног типа који је наведен као тип елемената низа. Садржи адресу нултог елемента низа.
Стринг константа - је аналогна непроменљивом показивачу на непроменљиви податак
(садржи адресу стринга учитаног у меморијски опсег који заузимају инструкције извршног фајла).
Поједностављено речено: и показивач и име низа и стринг константа садрже адресе.
Као што си и сам закључио: показивачи јесу именоване адресе. Подаци који садрже адресе.



Ko je trenutno na forumu
 

Ukupno su 793 korisnika na forumu :: 47 registrovanih, 5 sakrivenih i 741 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Sale, A.R.Chafee.Jr., aljosa7, amonsrb, amstel2, Atomski čoban, BSD, Chainsaw, crnitrn, Ctrl x, Dannyboy, dekao, Denaya, djordje92sm, Dorcolac, gasha, girici2, havoc995, komkom, Krusarac, Libertas, lovac12, LUDI, manda87, mane123, mercedesamg, Mercury, milos.cbr, nenad81, neutralal.com, novator, Ognjen D., Oluj2.1, pein, Pohovani_00, Polemarchoi, Recce, rovac, sakota79, Simon simonović, stegonosa, Toni, Toper, VJ, Vl veliki, VladaKG1980, vobo