Session 7 és 8

A következtetés lenne valami ehhez hasonló:

Megvan az identitás: a kifejezés a == * (a). amikor egy bármilyen típusú - mindig igaz.

Tekintettel arra, hogy egy sor minden elemét sorban vannak elhelyezve a memóriában, kezdve egy mutatót irányul, hogy a kezdeti elem, leszünk képesek megkerülni minden elemét a tömb, a mutató mozgatása minden lépésben a jogot arra, hogy a lehető legkisebb távolság (azaz, a szomszédos jobb eleme a megfelelő típusú ). pointer offset is elvégezhető növelő és csökkentő operátorok.

Az alábbi példában az összes elemet a tömb jelenik használata nélkül indexek (megjegyzendő, hogy a paramétereket a ciklus bármi lehet, mindaddig, amíg a ciklus lefutása több alkalommal, azaz a számláló értéke i maga nem használják indexként a hurkon belül ):

Az pointerek C ++ meghatározott sorozata műveletek:

  • p + n. ahol p - index, n - pozitív egész szám. Az eredmény - néhány támpontot nyert p ellensúlyozta n pozíciók jobbra.
  • p-n. ahol p - index, n - pozitív egész szám. Az eredmény - néhány támpontot nyert p ellensúlyozta n lépéssel balra.
  • p-q. ahol p és q - mutatókat azonos típusú. Eredmény - egy egész szám, a lépések számát kell eltolni q jobbra, amíg el nem éri a p index is ezt az eredményt nevezhetjük „távolság” a mutatók, lehet negatív, ha az elem, hogy elküldte a mutató q jobbra ( azaz, alább), mint az elem, amelyre a pointer irányul p.
  • p ++ (növekmény), P-- (csökkentő), ahol p - a mutatót. Műveletek azonos hatású p = p + 1, és p = p-1, ill.

Megvan az identitás: a kifejezés a [i] == * (a + i) mindig igaz (azaz a jobb és a bal éget egyenértékű kifejezés), ahol a mutató egy tömb bármely típusú, és én érvényes index a tömb. Ezzel a személyazonosság könnyen mozog az index, hogy a mutatók és vissza, amikor dolgozik egy tömbben.

Állandó utalásokkal és mutatókat állandók

A C ++, vannak speciális típusú indexek:

Egy példa, ahol vannak mindenféle jelek:

Karakter tömbök (vonalak)

Ez lehetővé teszi számunkra, hogy küldjön a kimenetet egy karakter tömb, anélkül, hogy át eljárás cout annak méretét.

A jel a végén a kimeneti nulla terminátor karakter ( „\ 0”).

cin eljárás az állítása is kap egy mutató egy tömb karakter, amely íródik a húr be a billentyűzetről, ebben az esetben az utolsó elemfüzérre cin eljárás automatikusan elhelyezi a null terminátor. Ráadásul úgy, hogy egy szöveg konstans (amikor a vonal egyértelműen meghatározott kettős idézőjelek a kód), miután az utolsó karakterhez kerül automatikusan érvényét terminátor. Ennek megfelelően a string hossza egy karakter több, mint amit világosan rámutatni.

Bypass sor, utalva egyenként minden egyes karakter lehet valami ehhez hasonlót (ebben az esetben, akkor visszavonja külön sorban minden egyes karakter és a kódját, a szimbólum táblázat):

Ugyanezt az eredményt lehetett volna elérni elegánsabb (de kevésbé világos), kombinálva a műveletek száma (dereference, növekmény, avtoprivedenie hogy bool) egy sorban:

A következtetés:

Egy példa a program kiszámolja és megjeleníti a karakterek száma a karakterlánc, amelyet a felhasználó a billentyűzetet:

Write program létrehozza tömb 10 véletlenszerűen egész intervallumban [-50, 50]. A kijelző az egész tömböt, és egy külön sorban - a minimális érték a tömbben.

Hogy megkerülje tömb mutatókat használ (elérheti a tömb elemeit egy indexek).

Írjunk programot, számolni és kimenetét a képernyőre a helyek száma szereplő felhasználó be a billentyűzetről sor, legfeljebb 80 karakter hosszúságú lehet.

Írjunk programot, számolni és kimenetét a képernyőre a számjegyek száma szereplő felhasználó be a billentyűzetről sor, legfeljebb 80 karakter hosszúságú lehet.

Írjunk programot, amely megváltoztatja a szöveg hosszabb, mint 80 karakter, be a billentyűzetről a felhasználó, mind a nagybetűket a kisbetűs.

Write program (használata nélkül könyvtári funkciókat feldolgozásra sor) másolni a felhasználó által bevitt szöveget összhangba egy új billentyűzet (maximum string-hossz - 80 karakter). A folyamat során a másolást el kell dobnia összes nem lényeges szóközök elején és végén a vonal, valamint több, egymás utáni szóközt kell cserélni egy. Nyomtatás az eredeti és az új vonal a képernyőn.

Ahhoz, hogy megkerülje vonalak használni mutatók.

Készítsünk programot, amely a kiválasztott vonalak a billentyűzetet (a maximális hossza egy vonal - 80 karakter) beszámol, mi több ez bekövetkezik a leggyakrabban, vagy jelzi, hogy a számok a sorban teljesen hiányzott.

Ha ugyanazt a frekvenciát a sorban találkozott számos számok, mint a vezető, hogy minden a megfelelő számjegyet. Ahhoz, hogy megkerülje vonalak használni mutatók.

  • A felhasználó belép egy string billentyűzet (maximum vonal hosszát - 80 karakter) programot kell meghatároznia, hogy pontosan elhelyezett zárójelben, vagy sem. Ez összhangban nem felel meg a záró zárójel előtt a megfelelő zárást. Példák érvényes vonalak (). (A + B + (a-c)). Példa helytelen vonal :. (. (A + b)) a + b ((a + b + (c-a)).
  • programnak meg kell határoznia Ha helyesen kerek, hullámos és szögletes zárójelek, akár nem - a felhasználó be a billentyűzetről tételek (80 karakter maximum karakterlánchossz). A keverést zárójelben (például: „]”) tekinthető hibás egy.
  • Kapcsolódó cikkek