Concluzia ar fi ceva de genul:
Avem identitatea: expresia a == * (a). în cazul în care un este orice tip - este întotdeauna adevărat.
Având în vedere faptul că într-o matrice de toate elementele sunt aranjate în serie în memorie, începând cu un pointer îndreptat spre elementul inițial, vom putea ocoli toate elementele de matrice, se deplasează cursorul la fiecare pas la dreapta la distanța minimă posibilă (adică, un element de drept învecinat tipul corespunzător ). indicatorul de offset poate fi realizată cu ajutorul operatorilor de creștere și decrementare.
În exemplul următor, toate elementele de matrice va fi afișată fără utilizarea de indici (rețineți că parametrii ciclului poate fi orice, atâta timp cât ciclul a executat un număr de ori, adică, valoarea contorului i nu în sine este utilizat ca un index de matrice în buclă ):
Peste setul de indicii în C ++ definit serie de operațiuni:
- p + n. unde p - indicele, n - un întreg pozitiv. Rezultatul - câteva indicii obținute p compensate de n poziții la dreapta.
- p-n. unde p - indicele, n - un întreg pozitiv. Rezultatul - câteva indicii obținute p compensate prin n poziții la stânga.
- p-q. unde p și q - indicii pentru același tip. Rezultatul - un număr întreg egal cu numărul de etape care trebuie mutat q spre dreapta până când ajunge la indicele p de asemenea, acest rezultat poate fi denumit „distanța“ între indicii, poate fi negativ dacă elementul care a trimis q pointer este corect ( adică, mai jos) decât elementul la care indicatorul este direcționat p.
- p ++ (creștere), P-- (decrementare), unde p - un pointer. Operațiuni efect echivalent p = p + 1 și p = p-1, respectiv.
Avem identitatea: expresia a [i] == * (a + i) este întotdeauna adevărat (adică, dreapta și stânga arde o expresie echivalentă), în cazul în care un pointer la o serie de orice tip și i index valid de matrice. Folosind această identitate ușor de a trece de la indexul la indicatoarele și înapoi atunci când se lucrează cu o matrice.
indicii constante și indicatori de constante
În C ++, există tipuri speciale de indici:
Un exemplu în care există tot felul de semne:
Tablourile de caractere (linii)
Acest lucru ne permite să trimiteți ieșirea la o matrice de caractere, fără a transfera metoda cout dimensiunea sa.
Un semn al sfârșitului de ieșire este caracterul terminator zero ( „\ 0“).
Metoda cin ca argument, poate primi, de asemenea un pointer la o serie de caractere, care va fi scris șirul introdus de la tastatură, în acest caz, ultimul element metoda cin șir plasează automat terminatorul nul. Mai mult decât atât, prin stabilirea unui șir constant (atunci când linia este stabilită în mod clar în ghilimele duble în codul) după ultimul caracter din șirul este plasat terminator nul automat. În consecință, lungimea șirului este un caracter mai mult decât ne-am subliniat în mod clar.
derivația, referindu-se în mod individual pentru fiecare dintre caracterul său poate fi ceva de genul (în acest caz, ne vom retrage pe o linie separată fiecare caracter și codul său de pe tabela de simboluri):
Același rezultat ar fi putut fi realizat mai elegant (dar mai puțin clar), care combină un număr de operații (endiancu, creștere, avtoprivedenie la bool), într-o singură linie:
Concluzia este:
Un exemplu de program care calculează și afișează numărul de caractere din șirul introdus de utilizator de la tastatura:
Programul de scriere creează o matrice de 10 numere întregi aleatoare în intervalul [-50, 50]. Afișează întregul matrice, și pe o linie separată - valoarea minimă în matrice.
Pentru a ocoli o serie de indicii de utilizare (pot accesa elementele unei matrice de indici).
Scrieți un program pentru a conta și de ieșire pe ecran numărul de spații conținute în utilizatorul a introdus de la linia de tastatură, nu mai mult de 80 de caractere în lungime.
Scrieți un program pentru a conta și de ieșire pe ecran numărul de cifre conținute în utilizatorul a introdus de la linia de tastatură, nu mai mult de 80 de caractere în lungime.
Scrieti un program care se schimbă în șirul este mai mare de 80 de caractere, introdus de la tastatura de către utilizator, toate literele majuscule în litere mici.
Program de scriere care (fără utilizarea de funcții de bibliotecă pentru rândurile de procesare) pentru a copia introduse de utilizator linia de text cu o nouă tastatură (lungimea șirului de caractere maxim - 80 de caractere). În procesul de copiere trebuie să se debaraseze toate spațiile non-semnificative la începutul și sfârșitul liniei, precum și mai multe spații consecutive trebuie să fie înlocuite cu unul. Imprimați originalul și noua linie de pe ecran.
Pentru a ocoli liniile de a utiliza indicii.
Scrieți un program care pentru liniile selectate cu tastatura (lungimea maximă a unei linii - 80 caractere) rapoarte ce număr apare cel mai des, sau indică faptul că cifrele din linia complet absentă.
În cazul în care aceeași frecvență în rândul întâlnit de mai multe cifre, ca lider pentru a aduce oricare dintre cifrele potrivite. Pentru a ocoli liniile de a utiliza indicii.