Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Pointeri

c


Pointeri

Un pointer este o variabila ce contine adresa unei alte variabile. O variabila de tip pointer se defineste cu instructiunea

tip * nume;



Variabilele tip pointer pot fi initializate doar cu adrese.

Pentru a calcula adresa unei variabile se utilizeaza operatorul &. Daca x este o variabi 535c22f la oarecare, expresia &x este adresa lui x. De exemplu putem scrie

int n;

int * pn; // pn este o variabila de tipul pointer la int

pn = &n; // initializeazǎ pn cu adresa lui n

Variabilele de tip pointer pot fi initializate la declararea lor. Putem scrie de exemplu

int n, *pn = &n;

Pentru a obtine valoarea variabilei indicate de un pointer se utilizeaza operatorul * (numit si operator de adresare indirecta).

Fie de exemplu instructiunile

int k, n= 10;

int * pn, *pk;

Instructiunile

k = n;

si

pn = &n;

k = *pn;

sunt echivalente, k primeste valoarea 10. (Variabila pn a fost initializata in prealabil cu adresa lui n).

Instructiunile

k = n;

si

pk = &k;

*pk = n;

sunt echivalente.

In final, instructiunile

k = n;

si

pk = &k;

pn = &n;

*pk = *pn;

sunt echivalente;

Orice variabila tip pointer trebuie initializata inainte de a fi utilizata. De exemplu, urmatoarea secventa de instructiuni nu este corecta

int *pn;

*pn = 5;

deoarece variabila pn nu a fost initializata. O secventa corecta este

int *pn;

int x;

pn = &x;

*pn = 5;

In acest caz variabila pn a fost initializata cu adresa unei variabile de tip intreg, x.

Probleme rezolvate

Problema Sa se defineasca o functie care sa permute valorile a doua variabile de tip double. Prototipul functiei va fi

void perm(double * a, double * b);

Programul este urmatorul.

# include <iostream.h>

functie ce permuta valorile a doua variabile

void perm(int* a, int* b)

// testarea functiei perm

int main()

Rezultatele executiei programului sunt prezentate in caseta text.

Amintim ca in limbajul C singura modalitate ca un parametru al unei functii sa fie un parametru de iesire este ca el sa fie de tip pointer.

Problema Se considera un vector cu 10 componente intregi. Sa se afiseze adresele corespunzatoare componentelor vectorului

utilizand operatorul &    de calcul al adresei

utilizand o variabila tip pointer ce va primi ca valoare initiala adresa elementului x[0].

Programul este cel de mai jos.

#include <iostream.h>

int main()

return 0;}

Rezultatele executiei programului sunt prezentate mai jos.

Problema Sa se scrie un program prin care componentele unui vector x cu 10 componente de tip intreg vor primi valorile x[i] = i * i, prin atribuire directa si utilizand o variabila tip pointer ce va primi ca valoare initiala adresa elementului x[0]. Programul este cel de mai jos.

#include <iostream.h>

int main ()

/*componentele vectorului primesc valori prin intermediul pointerilor */

adr = &x[0];

cout<<'valorile componentelor vectorului atribuite prin pointer'<<endl;

cout<<'ind.comp.'<<' '<<'valoare x'<<endl;

for(i = 0; i < 10; i++)

return 0;}

In caseta text de mai jos sunt prezentate rezultatele executiei programului.

Problema Fie un vector cu 6 componente reale. Sa se listeze componentele pare ale vectorului direct si utilizand o variabila de tip pointer. Programul este prezentat mai jos.

#include <iostream.h>

int main()

int i;

cout<<' componentele pare ale vectorului direct'<<endl;

for(i = 0; i < 6; i = i + 2)

cout << i <<' '<< a[i] << endl;

cout<<'    componentele pare utilizand o variabila tip pointer'<<endl;

float * adrz;

adrz = a;

for(i = 0; i < 6; i+=2)

In caseta text sunt prezentate rezultatele executiei programului.



Document Info


Accesari: 1208
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )