Vastaavasti ulkomaailma ei tiedä mitään aliohjelman omista muuttujista. Näitä aliohjelman lokaaleja muuttujia on esim. seuraavassa:
void kysy_matka(int *pMatka_mm) { int mm; printf("Anna matka millimetreinä>"); scanf("%d",&mm); *pMatka_mm = mm; }
pMatka_mm - aliohjelman parametrimuuttuja (tässä tapauksessa osoitinmuuttuja). mm - aliohjelman lokaali apumuuttuja matkan lukemiseksi.
Yleensäkin C- kielessä lausesulut { ja } muodostavat lohkon, jonka ulkopuolelle mikään lohkon sisällä määritelty muuttuja tai tyyppimääritys ei näy. Näkyvyysalueesta käytetään englanninkielisessä kirjallisuudessa nimitystä scope. Lokaaleilla muuttujilla voi olla vastaava nimi, joka on jo aiemmin esiintynyt jossakin toisessa yhteydessä. Lohkon sisällä käytetään sitä määrittelyä, joka esiintyy lohkossa:
#include <stdio.h> int main(void) { char ch='A'; printf("Kirjain %c",ch); { int ch = 5; printf(" kokonaisluku %d",ch); { double ch = 4.5; printf(" reaaliluku %5.2lf\n",ch); } } return 0; }Saman tunnuksen käyttäminen eri tarkoituksissa on kuitenkin kaikkea muuta kuin hyvää ohjelmointia.