Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Indexarea pointerilor

c



+ Font mai mare | - Font mai mic



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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 754
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved