Metode evoluate de programare Limbajele c şi C++


Tratarea parametrilor din linia de comandă



Yüklə 1,64 Mb.
səhifə17/44
tarix07.04.2018
ölçüsü1,64 Mb.
#46828
1   ...   13   14   15   16   17   18   19   20   ...   44

6.6. Tratarea parametrilor din linia de comandă



În linia de comandă folosită la apelul execuţiei unui program se pot utiliza diferiţi parametri. Aceşti parametri pot fi utilizaţi folosind parametrii argc şi argv ai funcţiei principale.

Parametrul argc este de tip întreg şi indică numărul de parametri din linia de comandă.

Parametrul argv este un tablou de pointeri spre zonele în care sunt păstraţi parametrii liniei de comandă. Aceştia se consideră şiruri de caractere.

Astfel antetul funcţiei principale va fi :


main (int argc, char *argv[ ])
Exemplu:

Considerăm că la lansarea programului prog s-au furnizat parametrii:


  1. MARTIE 1956

În acest caz argc=4, iar tabloul argv conţine pointerii:

- argv[0] - pointer spre numele programului (calea, numele şi extensia .EXE

- argv[1] - pointer spre şirul “31”;

- argv[2] - pointer spre şirul “MARTIE”;

- argv[3] - pointer spre şirul “1956”.


Observaţii:

1o. Lansarea unui program se face cu prima instrucţiune a funcţiei principale. Deci parametrii argc şi argv au deja în acest moment valorile indicate mai sus, putând fi analizaţi chiar cu prima instrucţiune executabilă.

2o. În mod frecvent, aceşti parametrii reprezintă diferite opţiuni ale programului, date calendaristice, nume de fişiere, etc.

3o. argv[0] este întotdeauna pointerul spre numele fişierului cu imaginea executabilă a programului.
void main ( int argc, char *argv[]) // va afisa parametrii din linia de comanda

{ int i;


for (i=0; i}


6.7. Modificatorul const



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.
Formatele declaraţiei cu modificatorul const sunt următoarele:
tip const nume = valoare;

const tip nume = valoare;

tip const nume;

const tip nume;

const nume = valoare;

const nume;


Exemplu:
void main (void)

{ const i=10; // i devine egal cu 10; nu este posibila o atribuire i=0

const pi = 3.1415926

char *const s=”martie”; // s este un pointer constant spre zona in care este

// pastrat sirul de caractere “martie”. Valoarea lui s

// nu poate fi schimbata dar continutul zonei spre

// care pointeaza s poate fi schimbat

*s= ‘1’; // schimba litera m cu 1

*(s+1)=’2’ // schimba litera a cu 2

char const *s=”aprilie”; // s este un pointer spre o zona constanta.

// valoare lui s poate schimbata dar sirul “aprilie”

// nu poate fi modificat

const char *s=”aprilie” // este identica cu declaratia de mai sus.

}
Modificatorul const se foloseşte frecvent la declararea parametrilor formali de tip pointer. O astfel de declaraţie are formatul:


const tip *nume_parametru_formal;
Un parametru formal declarat prin construcţia :
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.

De exemplu funcţia strlen din biblioteca standard a limbajului C are prototipul:
unsigned strlen (const char *s);
Ea se apelează prin expresii de atribuire de forma:
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.


Yüklə 1,64 Mb.

Dostları ilə paylaş:
1   ...   13   14   15   16   17   18   19   20   ...   44




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin