Показивач (програмирање) — разлика између измена

Садржај обрисан Садржај додат
Ред 180:
Проблеми се јављају, међутим, у случајевима када желимо да функција ипак измени одређене промјенљиве које јој проследимо као аргументе. Та се потреба јавља нпр. када желимо функцију која ће имати више резултата, јер помоћу уобичајене кључне речи <code>return</code> она може вратити само један резултат. Тада користимо тзв. ''пренос аргумената по референци'' који у ствари представља праксу да уместо оригиналног елемента проследимо његову адресу као аргумент. Ова адреса представља показивач на оригинални елемент, па иако се опет поштује правило да функција добија копију аргумента који јој се проследи, овај пут она добија копију '''адресе''', што је ипак сасвим довољно да се оригиналном аргументу приђе директно, дереференцирањем.
 
Погледајмо сљедећиследећи примјерпример:
-{<source lang="c">
void povecaj(int c )
Ред 195:
}
</source>}-
Из претходног параграфа закључујемо да функција <code>povecaj</code> неће извршити своју улогу јер на мјестоместо промјенљивепроменљиве <code>c</code> добија '''копију''' од <code>x</code>. На тај начин копија од <code>x</code> бива повећана за <code>1</code>, али не и оригинални елемент <code>x</code> у функцији <code>main</code>. Да бисмо поправили кôд, мораћемо извршити пар измјена:
* функција <code>povecaj</code> треба да се прилагоди тако да прихвата адресу цјелобројне промјенљиве, а не њу саму
* када добије адресу, дереференцираће је и повећати оно што се налази на тој адреси за <code>1</code>
* функција <code>main</code> треба да пошаље адресу од <code>x</code>, а не сāмо <code>x</code>
Погледајмо како изгледа резултат измјенаизмена:
-{<source lang="c">
void povecaj(int * pc )