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




Pointeri la structuri

c


Pointeri la structuri

Pentru a ilustra citeva din consideratiile referitoare la
pointeri si tablouri de structuri sa rescriem programul de
contorizare a cuvintelor cheie, de data aceasta folosind pointerii
in loc de indici.

Declaratia externa "keytab" nu necesita modificari, dar
"main" si "binary" necesita.

main() /* count keywords; pointer version */

struct key *binary(word, tab, n) /* find word */
char *word; /* in tab[0]...tab[n-1] */
struct key tab[];
int n;

return(NULL);
}
Aici sint mai multe chestiuni de notat. Prima, declaratia
"binary" trebuie sa indice ca e returneaza un pointer
structurii tip "key" in locul unui intreg. Acesta este declarat
in "main" cit si in "binary". Daca "binary" gaseste cuvintul,
returneaza un pointer; daca acesta lipseste, returneaza NULL.

A doua, orice acces la elementele lui "keytab" sint facute
prin pointeri. Aceasta determina o schimbare semnificativa in
"binary calculul poate fi simplu.

mid = (low + high) / 2

deoarece adunarea a doi pointeri nu va produce nici un
fel de raspuns utilizabil si de fapt este ilegala. Aceasta trebuie
schimbata in

mid = low + (high - low) / 2

care seteaza "mid" in punctul de la jumatatea intre "low" si
"high".

Ar trebui sa studiati si initializatorii pentru "low" si "high"
Este posibil sa se initializeze un pointer la adresa unui obiect
definit dinainte; aceasta am facut noi aici.

In "main" am scris:

for (p = keytab; p < keytab + NKEYS; p++)

Daca p este un pointer la structura, orice operatie aritmentica
asupra lui p tine cont de dimnesiunea actuala a structurii,
astfel p++ incrementeaza p cu cantitatea corecta pentru a obtine
urmatorul element al tabloului de structuri. Dar sa nu credeti
ca dimensiunea structurii este suma dimensiunilor membrilor sai
deoarece aliniamentul cerut pentru diferiti membri pot determina
aparitia de "gauri" in structura.

Si in final o consideratie asupra formatului programului.
Cind o functie f returneaza un tip complicat ca in:

struct key *binary(word, tab, n)

numele functiei este dificil de vazut si de gasit cu un
editor de texte De aceea un alt stil este citeodata folosit.

struct key *
binary(word, tab, n)

Aceasta este mai mult o chestiune de gust personal; luati
forma pe care o doriti si tineti-va de ea.





Document Info


Accesari: 1912
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 )