Lecția 10 valorile parametrilor în schimbare

Modificarea valorilor parametrilor

Din lecția 9, ați învățat cum să împartă programul în bucăți mici, ușor de gestionat, numite funcții. După cum știți, programul poate transmite (parametrii) funcții de informare. Prezentat în programul Session 9 utilizate sau valorile parametrilor de ieșire, dar nu le schimba. În această lecție veți învăța cum să modificați valoarea parametrului în funcție. Veți găsi că pentru a schimba setările în funcția de fapt necesită mai multe etape decât vă puteți imagina. Cu toate acestea, acest tutorial vă va învăța toate pașii pe care trebuie să le știi. Până la sfârșitul acestei lecții, veți învăța următoarele concepte de bază:

• Dacă funcția nu utilizează indicii sau referințe, nu se poate modifica setarea.

Modificarea valorii parametrului funcției este o operație convențională. Experiment cu programele prezentate in acest tutorial, asigurați-vă că ați însușit complet acest proces.

De ce nu pot funcționa în mod normal Modificarea valorii parametrului

Programul următor NOCHANGE.CPP trece doi parametri, la nume mari și mici, în funcție de display_values. Funcția display_values, la rândul său, stabilește parametrii atât numărul 1001 și apoi la ieșire valoarea fiecărui parametru. Când funcția este finalizată, programul este repornit și afișează valorile acestor parametri:

display_values ​​void (int a, int b)

b = 1.001;
cout <<"Значения в функции display_values равны " <<а <<" и " <>

Când compila și rula acest program, veți vedea următoarea ieșire:

C: \> NOCHANGE

Valori în display_values ​​funcționa egal 1001 # 9 și 1001

După cum puteți vedea, valorile parametrilor din funcțiile display_values ​​au fost schimbate (1001). Cu toate acestea, după finalizarea valorii funcției de variabile mari și mici, în principal a rămas același. Pentru a înțelege de ce schimbarea parametrilor nu a afectat cel mare variabilă și mici, în principal, aveți nevoie pentru a înțelege modul în care C ++ trece parametrii funcției.

Atunci când programul pentru a trece parametrii la o funcție, implicit C ++ face o copie a valorilor parametrilor și plasează copia într-o locație de memorie temporară numită stivă. Funcția utilizează apoi copia valoarea pentru efectuarea operațiunilor sale. Când funcția este finalizată, C ++ conținutul debarasează stivă și toate modificările aduse funcției parametrului de copiere enacheny.

După cum știți, variabila este numele atribuit programul o celulă de memorie, care stochează valoarea unui anumit tip. De exemplu, să presupunem că variabilele sunt mari și mici în celulele de memorie 10 și 12. Dacă treci variabile function display_values, C ++ se va plasa o copie a valorilor acestor variabile pe stivă. Fig. 10.1 arată că alte display_values ​​funcționale vor utiliza copii ale variabilelor.

Fig. 10.1. C ++ plasează câte o copie a valorilor parametrilor într-o zonă de stocare temporară numită stivă.

De ce funcția de C ++, de obicei, nu se poate schimba valorile parametrilor

Modificarea valorii PARAMETRI

shange_values ​​void (int. * mare, int. * mic) ---> pointer la un int

* Big = 1001;
* Mici = 1001;

void change_values ​​(int * a, int * b)

* A = 1001;
* B = 1001;
cout <<"Значения в функции display_values" <<" равны " <<*а <<" и " <<*b <>

Când compila și rula acest program, veți vedea următoarea ieșire:

C: \> CHGPARAM

Valorile din funcțiile display_values ​​sunt 1001 și 1001

Valorile după funcția de 1001 și 1001

Modificarea valorilor parametrilor în funcții

void some_function (int * some_variable);

În continuare în interiorul funcției trebuie să utilizați un asterisc înainte de numele variabilei:

* Some_variable = 1001;
cout <<*some_variable;

Al doilea exemplu

void swap_values ​​(float * o, float * b)

float mare = 10000.0;
float mic = 0,00001;
swap_values ​​(mari, mici);
cout <<"Big содержит " < cout <<"Small содержит " <>

void swap_values ​​(float * o, float * b)

Cu toate acestea, funcția declară o temperatură variabilă la fel ca float, mai degrabă decât ca un indicator pentru a pluti. float temp;

Luați în considerare următoarea declarație:

Nu vă faceți griji dacă nu se poate face cu ușurință cu indicii, le va explora mai în detaliu în partea 3. Până în prezent, cu toate acestea, să înțeleagă doar că, dacă doriți să modificați funcțiile în setările, trebuie să utilizați indicii.

Folosind un asamblor pentru listare o mai bună înțelegere a compilatorului

Cel mai bun mod de a înțelege modul în care compilator C ++ tratează pointer, este de a studia producția de asamblare a compilatorului. Cele mai multe compilatoare C ++ oferă comutator de linie de comandă pe care o puteți utiliza pentru a spune compilatorului să ieșire o listă de asamblare. Citind lista de asamblare, puteți înțelege mai bine modul în care compilatorul folosește stiva atunci când trece parametrii la funcția.

CE TREBUIE SĂ ȘTIȚI

Din această lecție ați învățat cum să modificați valoarea din interiorul ktsii sic. Pentru a face acest lucru, funcția ar trebui să utilizeze indicii. În primul rând, puteți găsi indicii prea complicate. Din lecția 14 vă va învăța cum să folosească ++ de referință C. care simplifica procesul de schimbare a parametrilor în cadrul funcției. Cu toate acestea, din moment ce mulți programatori C folosesc indicii pentru a modifica setările, trebuie să știți, și această versiune a software-ului.

Din lecția 11, afli funcții de bibliotecă modul de rulare oferite de compilator C ++. poate accelera programarea, permițându-vă să dezvolte programe sofisticate rapid. Cu toate acestea, pentru a studia lecția 11, asigurați-vă că ați însușit următoarele concepte de bază:

Realizat de uCoz

articole similare