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?
Вредност показивачке променљиве (показивача) је адреса. Показивач показује на податак који се налази на наведеној адреси. Име низа је непроменљиви показивач на податке оног типа који је наведен као тип елемената низа. Садржи адресу нултог елемента низа.
Стринг константа - је аналогна непроменљивом показивачу на непроменљиви податак
(садржи адресу стринга учитаног у меморијски опсег који заузимају инструкције извршног фајла).
Поједностављено речено: и показивач и име низа и стринг константа садрже адресе.
Као што си и сам закључио: показивачи јесу именоване адресе. Подаци који садрже адресе.
|