Documente Academic
Documente Profesional
Documente Cultură
Am văzut anterior că o constantă se defineşte prin caracterele care intră în compunerea ei.
De asemenea, în acelaşi capitol s-a arătat că putem atribui un nume unei constante printr-o
construcţie #define. Un astfel de nume se spune că este o constantă simbolică şi el se
substituie prin şirul de caractere care şi corespunde, în faza de preprocesare.
Un alt mod de a defini o constantă este acela de a folosi modificatorul const într-o
declaraţie. Printr-o astfel de declaraţie, unui nume i se poate atribui o valoare constantă. În
acest caz, numele respectiv nu mai este tratat de preprocesor şi el poate fi folosit în program
în mod analog cu numele variabilelor. Unui astfel de nume declarat cu ajutorul
modificatorului const nu i se poate schimba valoarea printr-o expresie de atribuire, ca şi unei
variabile obişnuite.
const nume;
Exemplu:
const pi = 3.1415926
char *const s=”martie”; // s este un pointer constant spre zona in care este
// nu poate fi modificat
tip *nume_parametru_formal;
corespunde unui parametru efectiv a cărui valoare este o adresă. La apel, valoarea
parametrului formal devine egală cu această adresă. Datorită acestui fapt, funcţia apelată
poate să modifice data aflată la adresa respectivă. Dacă se foloseşte modificatorul const
utilizat la declararea unui astfel de parametru formal atunci se interzice funcţiei apelate să
modifice data de la adresa recepţionată la apel de către parametrul formal corespunzător.
Acest mecanism este folosit frecvent în cazul funcţiilor de tratare a şirurilor de caractere.
i=strlen(x);
unde x este un pointer spre o zonă de memorie în care se află un şir de caractere.
Funcţia strlen determină lungimea şirului aflat la adresa recepţionată de către parametrul s.
Ea nu are voie să modifice şirul respectiv şi din această cauză parametrul s se declară folosind
modificatorul const.