Jaký je rozdíl mezi lokálními a globálními proměnnými?

Většina programovacích jazyků podporuje místní a globální proměnné.

Místní proměnné

Místní proměnné existují pouze v rámci jedné funkce, části kódu programu, která provádí určitý úkol, v němž jsou definovány nebo deklarovány. Po ukončení funkce přestanou existovat. Místní proměnné jsou vytvářeny pokaždé, když je funkce volána nebo spuštěna. Tyto proměnné nejsou přístupné pro jiné funkce nebo pro hlavní program a jako takové jsou obvykle implementovány pomocí speciálního typu datové struktury, známého jako zásobník.

Stack

V mnoha programovacích jazycích je "zásobník" klíčovým prvkem implementace místních proměnných. Před spuštěním funkce program přidá všechny místní proměnné deklarované v této funkci do zásobníku v opačném pořadí, ve kterém byly deklarovány. Když program vyvolá funkci, místní proměnné se ze zásobníku odstraní v opačném pořadí, takže poslední naposledy přidaná proměnná je první, která má být odstraněna.

Globální proměnné

Globální proměnné jsou deklarovány v hlavním těle zdrojového kódu programu mimo všechny funkce a proto existují v jakékoli části kódu, a to i v rámci funkcí. Globální proměnné nejsou znovu vytvářeny při každém vyvolání určité funkce. Programy často používají globální proměnné pro ukládání dat, které jsou zpracovány mnoha různými funkcemi. Jednoduchý program pro úpravy textu například může načíst obsah souboru, ve kterém pracujete na globální proměnné.

Výhody a nevýhody

Místní proměnné usnadňují ladění a údržbu počítačových programů. Programátoři mohou určit přesný bod, ve kterém program upravuje hodnotu místní proměnné, zatímco globální proměnné mohou být modifikovány kdekoliv v rámci zdrojového kódu. Místní proměnné také produkují méně neočekávaných interakcí s voláními na funkce nebo vnějším světem, známými jako vedlejší účinky, než globální proměnné. Globální proměnné jsou přístupné ve funkcích, ve kterých se nepoužívají, v rozporu s konceptem modulárního programování, ve kterém kód programu sestává z bloků nebo malých izolovaných modulů, takže programátoři upřednostňují vzácnou modulární strukturu používají je