Глобални идентификатори

Идентификатори података, типова, симболичких константи који су дефинисани на почетку тела функције (главног програма или потпрограма) имају блоковски досег и као такви локални су за ту функцију. То значи да они могу да се користе само унутар те функције. Другим функцијама они нису приступачни и, као такви, не могу да се користе за измену података међу функцијама.

Дозвољена је употреба истог идентификатоа унутар произвољног броја функција. Ти идентификатори су међусобно потпуно независни и могу да имају чак и различите намене унутар различитих функција.

Глобални идентификатори су заједнички за већи број функција. Дефинишу се наредбама које се пишу изван дефиниције било које функције.

Досег глобалних идентификатора протеже се од места одговарајуће декларативне наредбе до краја датотеке у којој се налази та наредба. Због тога се овакав досег често назива датотечки досег.

Подаци са глобалним идентификаторима називају се и глобални подаци. Пошто су доступни из свих функција које се налазе иза њихове дефиниције представљају другу могућност, поред параметара, за измену података међу функцијама. Мењање вредности глобалних података из функција представља нови вид бочних ефеката функција.

Измена података међу функцијама помоћу глобалних променљивих је ефикаснија од измене података помоћу механизма параметара и аргумената, али употребом глобалних променљивих смањује се флексибилност примене дате функције на различите комплете почетних података. Када се користе глобалне променљиве, сваким позивањем функције обрађује се исти подаци. Када се подаци измењују помоћу параметара, приликом сваког позивања функције могу да се наведу други подаци као аргументи. Успостављање везе између аргумената и параметара, међутим, тражи додатно време и додатни меморијски простор.

У начелу, функције опште намене треба да измењују податке са другим функцијама помоћу параметара и вредности функција. Механизам измене података помоћу глобалних променљивих треба да се користи само унутар затворених програмских система, тј. код функција које су специфичне за дати систем и не могу да се користе изван тог система.

Глобални подаци су обавезно трајни.

Трајни подаци се стварају приликом извршавања наредби за њихово дефинисање. Вредности евентуалних иницијализатора се израчунавају само том приликом. У одсуству иницијализатора имају нулте почетне вредности. Трајни подаци се уништавају тек приликом завршавања целог програма. Да би подаци постали трајни, на почетак наредби за њихово дефинисање треба додати модификатор static. Због тога се овакви подаци називају и статички подаци.

Глобални подаци се стварају пре првог коришћења било ког податка и позивања било које функције из датотеке у којој су дефинисани. Врло често, то се дешава пре почетка извршавања главног програма (пре позивања функције main).

Као и сви трајни подаци, глобални подаци постоје до завршетка целокупног програма.

Декларисање глобалних података

Глобални подаци се декларишу додавањем модификатора extern на почетку наредбе за дефинисање података. Тада не сме да се наведе иницијализатор ни за један од декларисаних података.

Сваки податак сме да се декларише произвољан број пута, али мора да се дефинише тачно једном. Приликом дефинисања може да се наведе и иницијализатор. Пошто се ради о глобалним, а то значи и трајним подацима, подразумеване почетне вредности су нула.

У језику C сваки податак мора да се бар декларише пре првог коришћења у програму. Дефиниција може да се наведе и касније.

extern int x; /* deklaracija globalnog podatka */
int fun() {return x;} /* upotreba globalnog podatka */
int x=5; /* definicija globalnog podatka */

2 thoughts on “Глобални идентификатори

  1. Повратни пинг: Дефиниција и декларација података и функција – Рачунари и програмирање

  2. Повратни пинг: Модуларно програмирање – Рачунари и програмирање

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се /  Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се /  Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се /  Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се /  Промени )

Повезивање са %s