Documente Academic
Documente Profesional
Documente Cultură
inginereti
Tema 7
C++: pointeri, funcii
VARIABILE POINTER
Pointerii sunt variabile care au ca valori adresele altor variabile (obiecte).
Variabila este un nume simbolic utilizat pentru un grup de locaii de
memorie.
Valoarea memorat ntr-o variabil pointer este o adres.
Din punctul de vedere al coninutului zonei de memorie adresate, se disting
urmtoarele categorii de pointeri:
pointeri de date (obiecte) - conin adresa unei variabile din memorie;
pointeri generici (numii i pointeri void) - conin adresa unui obiect
oarecare, de tip neprecizat;
pointeri de funcii - conin adresa codului executabil al unei funcii.
POINTERI GENERICI
La declararea pointerilor generici ( void nume; ) nu se specific un tip, deci
unui pointer void i se pot atribui adrese de memorie care pot conine date de
diferite tipuri: int, float, char, etc. Aceti pointeri pot fi folosii cu mai multe
tipuri de date, de aceea este necesar folosirea conversiilor explicite pentru a
preciza tipul datei spre care pointeaz la un moment dat pointerul generic.
void *v1;
int a, *q1, *q2;
q1 = &a;
v1 = q1;
q2 = (int *) v1;
FUNCII
Execuia programului ncepe cu funcia principal, numit main
Funciile pot fi descrise n cadrul aceluiai fiier, sau n fiiere diferite
O funcie este formata din antet si corp
Dac funcia nu ntoarce nici o valoare, n locul tip_val_return se specific
void
Dac tip_val_return lipsete, se consider, implicit, c acesta este int
Dac funcia ntoarce o valoare, se folosete instruciunea return valoare.
La execuie, la ntlnirea acestei instruciuni, se revine n funcia apelant.
Nu este admis definirea unei funcii n corpul altei funcii.
Sintaxa:
nume_funcie (lista_parametrilor_efectivi);
Parametrii efectivi trebuie s corespund cu cei formali ca ordine i tip
Variabilele declarate n interiorul unei funcii, ct i parametrii formali ai
acesteia nu pot fi accesai dect n interiorul acesteia. Aceste variabile sunt
numite variabile locale i nu pot fi accesate din alte funcii
Exerciiu: S se scrie un program care citete dou numere i afieaz cele mai mare
divizor comun al acestora, folosind o funcie care l calculeaz.
#include <iostream.h>
int cmmdc(int x, int y)
{
if (x==0 || y==1 || x==1 || y==0)
if (x<0)
x=-x;
if (y<0)
y=-y;
while (x != 0)
{
if ( y > x )
{int z=x; x=y; y=z; }
x%=y;
}
return y;}
return 1;
void main()
{
int n1,n2; cout<<n1=;cin>>n1; cout<<n2=;cin>>n2;
int diviz=cmmdc(n1,n2);
cout<<Cel mai mare divizor comun al nr-lor:<<n1<< i ;
cout<<n2<< este:<<diviz<<\n;