Miért mutatókat C

Miért mutatókat C?

A blognak a leckét, hogy mesél mutatók. A bemutató, megpróbáltam elmagyarázni részletesen, hogy milyen az index, és hogyan működhet. De elfelejtettem a legfontosabb dolog, akkor mi kerül kezdeni. És átgondolt olvasók hamar észre ez az én hiányosság és kezdett kérdezés logikai kérdést: „Miért ez az egész? Miért mutatókat? Miért nem működnek a változókat? Normális ez volt minden, jól, mit kezdtél el ezt? Huh? "

És az az igazság, amit elkezdtem, akkor? Itt az ideje, hogy pont az i. Tehát, az alábbiakban néhány választ arra a kérdésre: „Miért van szüksége C mutatókat?”

Válasz számú.

C nyelv szabályai olyanok, hogy használata nélkül mutatók, bizonyos dolgokat nem lehet megvalósítani.

Hívószavak jó és szemléletes példája még jobb.

Emlékeztetem Önöket, hogy a C nyelvben változók függvényében kerülnek átadásra „érték alapján.” Ez azt jelenti, hogy ha hívjuk a funkció bizonyos paramétereket, akkor a memória létrehozott egy példányát ezeket a változókat, és azokat a funkció. Amikor a funkció befejezi a munkáját, a másolatok elpusztult.

És annál inkább akadályoz bennünket?

Nos, alapvetően, hogy nem tud írni egy függvényt, amely megváltoztatja a két változó értékét helyeken. Elvileg már beszéltem erről a problémáról, és még hozta a döntést, de valahogy nem figyelem a tény, hogy nem mutató, hogy írjon egy ilyen funkció lehetetlen. De ez volt minden egy helyen, röviden újra.

Első pillantásra úgy tűnik, hogy minden rendben van, de a futás, a következő program könnyen belátható, hogy írtunk a funkció nem működik, ahogy azt várjuk.

void-swap (int a, int b)

Miért mutatókat C

void-swap (int * pi_a, int * pi_b)

// fogadja mutatókat int változók

// A swap függvény mutatók

A program eredményeként a használatát mutató:

Miért mutatókat C

Mint látható, most, hogy a funkció működik, ahogy szükség van rá.

Válasz a két számot.

Pointerek hatékonyan lehetőségek kihasználása és a számítógép erőforrásait.

Bár a válasz egy másik, és az ok még mindig ugyanaz. Átadás érvek a funkciót. Már említettük, egy példányt a változók át a funkciót. Ez a szabály nem vonatkozik a tömböket. A tömbök mindig megfelelt „hivatkozunk.” Ez az, ami hatékony felhasználása a források és a számítógép képességeitől.

Képzeld el, hogy telt egy sor 10.000 kettős értékek értékét. Azaz, ha hívja a funkciója a program kellene találni elég hely, hogy több adatot tárolnak. Sőt, a folyamatos tér, a tömbök, meg kell emlékezni, amelyek egymás után helyezkednek memóriában. És különben is, arra lenne szükség, hogy másolja az összes elemet az egyik tömb a másikra.

Egy ilyen megközelítés szolgált volna egy csomó időt és a memória, és általában, lehetetlen lett volna a nagy tömbök. És így telt el a mutatót az első elem és örül. Nem kell sok memóriát keresni, és másolatot nem kell.

A harmadik válasz.

Használata pointerek írhatunk hatékony programokat.

Eddig, hisz a szó. Tudom, hogy egy eset, amikor én hozzá itt egy kicsit később.

A negyedik választ.

Ez a válasz valószínűleg arra a kérdésre vonatkozik: „Miért kell tudni a jeleket?”, Ahelyett, hogy az eredeti kérdésre: „Miért van szüksége mutatókat C, alapvetően?”.

A válasz nyilvánvaló és banális.

C nyelv van kialakítva oly módon, hogy anélkül, hogy tudnánk elveinek dolgozó mutatók, csak most nem tudja használni a sok jellemzőjét.

Példa okozhat nagyon könnyen. Nyisd meg a Guide to String függvények a C és megnézed, hogy ezek a funkciók visszaút. Rengeteg őket vissza a munkájuk következtében mutatók. És ha ezek nem tudnak semmit, hogyan lehet használni őket? Igen utat.

Ez minden mára.

Töltse szöveges változata a leckét. [PDF]

Kapcsolódó cikkek