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)
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ó:
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]