17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

x = y; y = t;<br />

}<br />

// ordonare vector<br />

void sort ( int a[], int n ) {<br />

...<br />

if ( a[i] > a[i+1])<br />

schimb ( a[i], a[i+1]);<br />

...<br />

}<br />

Spre deosebire de un parametru pointer, un parametru referintã este folosit de<br />

utilizator <strong>în</strong> interiorul functiei la fel ca un parametru transmis prin valoare, dar<br />

compilatorul va genera automat indirectarea prin pointerul transmis (<strong>în</strong> programul<br />

sursã nu se foloseste explicit operatorul de indirectare '*').<br />

Referintele simplificã utilizarea unor parametri modificabili de tip pointer, eliminând<br />

necesitatea unui pointer la pointer. Exemplu de definire <strong>în</strong> C++ a functiei “strtoi” si de<br />

utilizare a functiei cu argument referintã:<br />

int strtoi (char *start, char * & stop) {<br />

char * p=start;<br />

while (*p !=0 && isspace(*p)) // ignora spatii<br />

p++;<br />

start=p;<br />

while (*p != 0 && isdigit(*p) )<br />

p++;<br />

stop= p+1;<br />

return atoi(start);<br />

}<br />

// utilizare<br />

void main () {<br />

char * s =" 1 12 123 1234 ";<br />

char * p=s ; int x;<br />

while ( x=strtoi(p,p))<br />

printf( "%d \n",x);<br />

}<br />

Sintaxa declararii unui tip referintã este urmãtoarea:<br />

tip & nume<br />

unde "nume" poate fi:<br />

- numele unui parametru formal<br />

- numele unei functii (urmat de lista argumentelor formale)<br />

- numele unei variabile (mai rar)<br />

Efectul caracterului '&' <strong>în</strong> declaratia anterioarã este urmãtorul: compilatorul creeazã<br />

o variabilã "nume" si o variabilã pointer la variabila "nume", initializeazã variabila<br />

pointer cu adresa asociatã lui "nume" si retine cã orice referire ulterioarã la "nume" va<br />

fi tradusã printr-o indirectare prin variabila pointer anonimã creatã.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!