Documente Academic
Documente Profesional
Documente Cultură
Pointeri
Definirea și inițializarea pointerilor
Indirectarea multiplă
Alocarea dinamică
unde:
- type - este tipul pointerului şi specifică tipul obiectului pe care pointerul îl
poate puncta
- var_nume - numele pointerului;
countPtr count
countPtr = &count; 7
y yptr y
5 500000 600000 600000 5
yPtr
Adresa lui y
este valoarea
lui yptr
Programarea calculatoarelor I - Gyorodi
Cornelia 9
Exemplu – Utilizarea pointerilor
#include <stdio.h>
int main () {
int var = 20;
int *ip; /* declarea unei variable pointer */
ip = &var; /* initializarea variabilei pointer*/
printf("Adresa variablei: %x\n", &var ); printf("Adresa stocata in
variabila ip : %x\n", ip );
printf("Value of *ip variable: %d\n", *ip ); /* accesarea valori
variabilei utilizand un pointer */
return 0;
}
int main()
{
int a; /* a este un intreg */
int *aPtr; /* aPtr este un pointer la un intreg */
a = 7;
aPtr = &a; /* aPtr setat sa indice adresa lui a */
printf( “Adresa lui a este %p\n Valoarea lui aPtr este %p", &a, aPtr );
printf( "\n\nT Valoarea lui a este %d\nValoarea lui *aPtr este %d", a, *aPtr );
return EXIT_SUCCESS;
}
int *p, q;
...
p = &q;
p ++; /* pointerul p va indica urmatoarea adresa dupa q */
main()
{
int i=1, j=5, *p=&i;
*p=2;
(*(p=&j))++;
printf(“i=%d j=%d\n”,i ,j);
}
În instrucţiunea (*p) ++, parantezele fac ca valoarea (punctată) indicată de p să fie incrementată
void main(void ){
char sir[80];
int i;
gets(sir);
for (i = 0; sir[i]; i++)
printf ("%c", sir[i]);
}
Tabloul suit are o dimensiune fixă, dar șirurile pot avea orice dimensiune
26
Returnarea unui pointer dintr-o funcție
Limbajul C permite și returnarea unui pointer dintr-o funcție. Pentru a face acest lucru, ar
trebui să declarați o funcție care returnează un pointer ca în exemplul următor:
int * myFunction() {
. . .
}
Nu este o idee bună să returnați adresa unei variabile locale în afara funcției, așa că ar
trebui să definiți variabila locală ca variabilă statică.
Exemplu: #include <stdio.h>
#include <time.h>
/* function to generate and return random numbers. */
int * getRandom( ) {
static int r[10];
int i;
srand( (unsigned)time( NULL ) ); /*uses the value of the system timer/counter as
the random seed.*/
for ( i = 0; i < 10; ++i) {
r[i] = rand();
printf("%d\n", r[i] );
}
return r;
}
27
Exemplu - Returnarea unui pointer dintr-o funcție
#include <stdio.h>
#include <time.h> int main () {
/* function to generate and return random /* a pointer to an int */
int *p; int i;
numbers. */
int * getRandom( ) { p = getRandom();
static int r[10];
int i; for ( i = 0; i < 10; i++ )
srand( (unsigned)time( NULL ) ); printf("*(p + [%d]) : %d\n", i, *(p + i) );
for ( i = 0; i < 10; ++i) {
r[i] = rand(); return 0;
}
printf("%d\n", r[i] );
}
return r;
}
int main(void){
char *p;
delete v;
int main(void){
int sort[100], i;