David J. MALAN: Írjunk egy programot amelyet igyekszünk cserélni értékeit két változó, x és y. Előre írtam sokat A program már. Először is, hogy egy változót, x, és tárolja azt az értéket, 1. Aztán változót y és tárolja azt az értéket, 2.. Aztán folytatja printf megjeleníteni ezeket az értékeket a két változó. Aztán azt állítják, egy másik printf hogy csere azokat a változókat. Aztán hívja a függvényt nevű csere. És akkor azt állítom, hogy a változók már cserélték. És akkor nyomtassa ki, hogy amit én állítják vannak az új értékeket az x és y. Most mi is ezt a funkciót csere? Ez nem olyan dolog, hogy jön a C- Valóban, ha megnézzük a tetején én fájl, észre fogod venni, hogy én már kijelentette prototípusa ezt a funkciót csere leszögezi, hogy úgy két ints, önkényesen úgynevezett a és b, és ez a függvény nem ad vissza semmit. Tehát valószínűleg, hogy mit is mond A swap a és a b értékek. Nézzük most végre csere. Először fogok bejelenteni ideiglenes változó és rendelje hozzá az érték egy, de tudtam, csak olyan könnyen tárolható benne b. Én akkor meg fog változni az értéket Egy azonos legyen, hogy ab. És akkor végül, én meg fog változni a értéke b, hogy mi a volt, de most temp. Most azt állítják, amit én most tett logikailag helyes. Már tárolni egy egy ideiglenes változó, megváltoztatta a értéke legyen B, majd megváltoztatta b értéke, hogy az, amit a-es volt. De amikor lefordítani és futtatni ezt programot, aggódom, hogy ez nem lesz, amit látok. Legyen, nincs csere. dot perjel, nem csere. És sajnos szerint printf, az x értéke és y, sőt azt követően, hogy azt állítják, hogy csere őket, még az 1. és 2.. Vajon miért van ez? Nos, kiderült, hogy a legfontosabb, amikor ezt a funkciót csere, átadva x és y az érvek, valójában példányban, hogy x és y is átment csere. Nevezetesen, ezek értékei 1 és 2 átment a csere, mint a és b. És ez az a és b, hogy mi vagyunk végül csere a fő. Azaz, 1 lesz 2, 2 1 lesz. De mivel csere nincs visszatérési értéke és mert kapott példányban x és y, ez a viselkedés nincs hatással az x és y. Sőt, a és b távcsöves, hogy úgy mondjam, cserélni, míg x és y marad távcsöves a fő. Tehát van egy kis probléma. De hogyan lehet megjavítani?