CATEGORII DOCUMENTE |
Indexarea pointerilor
In C, daca p este un pointer, iar i este intreg, p[i] este identic cu *(p+i). Daca avem declaratiile:
short q[100];
short *pq
atunci sunt permise si posibile urmatoarele declaratii:
Varianta cu tablou |
Varianta cu pointeri |
Descriere |
pq=&q[0] pq=q |
pq=&q[0] pq=q |
Pointerul pq indica adresa primului element al tabloului q |
q[n] |
pq[n] *(pq+n) |
pq[n] inseamna acelasi lucru cu *(pq+n) |
In C, daca se pune un index unui pointer, ca in pq[n], atunci se considera aceasta utilizare echivalenta cu *(pq+n). Cu alte cuvinte, orice referire la pq[n] inseamna acelasi lucru cu valoarea de la adresa (pq+n).
Exemplu: Programul urmator realizeaza tiparirea pe ecran a numerelor cuprinse intre 1 si 10.
void main (void) ;
int *p, i;
p = v; /* p indica spre v */
for (i=0;i<10;i++) printf ('%d', p[i]); }
Utilizarea constantelor sir in locul poinetrilor la caractere este posibila dar nu este uzuala.
Exemplu:
# include <stdio.h>
void main()
Exemplu de utilizare a stivei. Stiva este o lista cu acces tip LIFO (last in - first out). Pentru a avea acces la elementele stivei, se utilizeaza doua rutine: push() si pop(). Calculatorul pastreaza stiva intr-un tablou, iar rutinele push() si pop() realizeaza accesul la elementele stivei utilizand pointeri. Pentru memorarea varfului stivei, utilizam variabila tos (top of stack).
Consideram ca folosim numai numere de tip intreg. In programul main(), rutinele push() si pop() sunt utilizate astfel: push() citeste numerele introduse de la tastatura si le memoreaza in stiva daca acestea sunt nenule. Cand se introduce un zero, pop() extrage valoarea din stiva.
# include <stdlib.h>
# include <stdio.h>
void push(); /* Prototipul functiei push() */
int pop(); /* Prototipul functiei pop() */
// Se rezerva pentru stiva 50x4 = 200 locatii
int stack[50];
int *p1, *tos;
void main(void) while (value != -1);
void push(int i) /* Functia push() */
*p1 = i;
printf('introdus in stivan');
int pop()
p1 --;
return *(p1+1); }
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 856
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved