indicii manipulând

indicii manipulând

Acasă | Despre noi | feedback-ul

· Adăugarea și scăderea indicii cu o constantă;

· Scădeți un indicator la altul;

Adunare și scădere de indicii cu n constantă înseamnă că indicatorul se mișcă pe celule de memorie de pe cât mai mulți octeți ca ia nperemennyh de tipul la care. Să presupunem că indicatorul este un tip de caracter și valoarea sa este egală cu 100. Rezultatul adăugării unității indicator cu - 101, deoarece este nevoie de stocare de tip char variabila 1 octet. Dacă valoarea indicatorului este de 100, dar este de tip întreg, rezultatul adăugării sale la unitatea ar fi 104, deoarece pentru variabila de tip int atribuit 4 octeți.

Diferența dintre cele două indicii - diferența dintre valorile lor este împărțită la dimensiunea în octeți de tip. Astfel, diferența dintre indicii nule și a treia matrice este de trei elemente, dar a treia și a noua - șase. Însumarea celor două indicatoare nu sunt permise.

Incrementa cursorul se mută la următorul element de matrice, și decrementare - anterior:

Prin semne, după caz ​​operatorii relaționale ==. = <,>,<=,>=. Cu alte cuvinte, indici pot fi comparate. De exemplu, în cazul în care i indică al cincilea element de matrice, și j - la început, atunci raportul i> j este adevărat. În plus, orice indicator poate fi comparat pentru egalitatea cu zero. Cu toate acestea, toate aceste afirmații sunt adevărate, dacă este o indicare pointer la aceeași matrice. În caz contrar, rezultatul operațiilor aritmetice și a operatorilor relaționale este nedefinit.

Trimiteri către indicii.

Conceptul de matrice de indicatori este deschis și simplu, deoarece indicii au o valoare certă. Cu toate acestea, atunci când unul este îndreptat spre cealaltă, pot exista probleme. Un pointer la un pointer la o formă de numeroase lanț diversiune sau indicii. Luați în considerare Fig.

Numeroase redirecționare pot continua să se extindă. Dar există câteva cazuri în care aveți nevoie de ceva mai puternic decât un pointer la un pointer. redirecționare excesivă duce la erori conceptuale, care sunt foarte greu de corectat. (A nu se confunda cu numeroase liste de redirecționare legate, care sunt utilizate în baza de date.)

Este important să înțelegem că New Balance - acest lucru nu este un pointer la un număr în virgulă mobilă, și un număr real la un pointer la un pointer.

ar trebui să se aplice operatorul * de două ori, așa cum se arată în exemplul următor, pentru a avea acces la valoarea țintă indică în mod indirect un pointer la un pointer:

#include
int main (void)
int x, * p, q **;
x = 10;
p = x;
q = p;
printf (, ** q ""); / * Ieșire valoarea lui x * /
return 0;
>

Aici p este declarat ca un pointer la un întreg, un q - un pointer la un pointer la un întreg. printf apel () afișează numărul 10 de pe ecran.

String - o secvență (array) de caractere (cum ar fi char), care se termină cu un simbol special - semn șir. Acest caracter este scris ca „\ 0“ (care nu trebuie confundat cu simbolul line feed „\ n“) și este egal cu 0. La intrarea la sfârșitul șir de caractere linie este adăugat automat. Toate funcțiile de a lucra cu siruri de caractere - și standard și a creat de programator - necesitatea de a se concentra asupra acestui personaj. Dacă doriți să creați un nou rând, asigurați-vă că trebuie să adăugați un terminator de linie. Dacă acest lucru nu se face, atunci lucrarea în continuare orice erori.

// constanta caracter - un caracter

char * str1 = "abc", * str2 = "abc";

// Nu se știe dacă la str1 == str2?

Șir literal este o secvență de caractere cuprinse între ghilimele. Șirul literal, un caracter mai mult decât este utilizat în înregistrarea sa - adaugă un „\ 0“.

Tastați un șir literal este „o matrice cu cantitatea corectă de simboluri constante.“ Un literal șir poate fi atribuit unei variabile de tip char *. Acest lucru este permis, deoarece în definițiile de mai sus C și C ++ de tip șir literal era char *. Cu toate acestea, schimbarea într-un șir literal printr-un pointer este o eroare.

char * str = „C C ++ „;

// run-time de eroare!

Faptul că un sir de caractere sunt constante, nu numai că este evidentă, dar, de asemenea, permite punerea în aplicare a face optimizarea semnificativă a metodelor de stocare și de acces la un sir de caractere. Dacă avem nevoie de un șir de caractere, care poate fi modificat, ar trebui să declare și să inițializa o serie de caractere.

char str [] = „C C ++ „;

// Array 8 caractere

// După ieșirea din memorie funcție care conține șirul nu va fi eliberat

Referință tip de date.

Pana acum am presupus că structurile de date și localizarea lor în spațiul de memorie este strict fixă ​​și nu se va schimba, că este static. Prin urmare, aceste date sunt, în general, denumite statice. În același timp, trebuie remarcat faptul că accesul la datele statice se face întotdeauna în mod direct la locul de locația lor fizică în memorie, de exemplu, mecanismul de acces direct la date.

Ca un mecanism de acces indirect la datele, Ada propune conceptul tipurilor de referință, a căror utilizare este în mare măsură similară cu utilizarea tradițională a indicii. Astfel tipuri Ada de referință au următoarele caracteristici:

· Valorile tip de referință se poate referi numai la valoarea tipului care a fost specificat în descrierea unui tip de referință.

Din aceasta rezultă că utilizarea tipurilor de referință Ada mai sigure și crește fiabilitatea generală a software-ului produs.

Este demn de remarcat faptul că cazurile în terminologia oficială este rupt și tipuri de referință Ada numite indicii nu sunt rare în literatura de specialitate. De obicei, acest lucru se face pentru a se asigura o prezentare mai tradițională a materialului.

Toate descrierile tipurilor de referință Ada pot fi împărțite în trei tipuri:

· Tipuri de referință pentru memorie dinamică

· Tipuri de acces generice

· Tipuri de referință pentru rutine

articole similare