[Playlisten] [Impressum und Datenschutzerklärung]

09.01.1 Zeiger, Pointer


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

dasletzte dicke Themain der ProgrammierspracheC die Zeigerpointerund damit zusammenhängende dynamische Speicheramdie Idee hinter den Zeiger Punkt folgendedieseganzen Variablendich der Anlegerdies müssen ja irgendwogespeichert werdenPunkt typischerweiseaber das Gros davonwerdendas Gros davon wird im Rahmen gespeichertden üblichen speicherrennenAccess Memorydas was sie als Speicherwege in den PC einbauenanauf dieser Maschine hier eben leider nur hundert zwanzig Byteda landen die typischen Variablenkönnen auch noch woanders gespeichert werden in Registern davon gibt's wenigerambilligend ausführlich erzähltder übliche Ortist das Kommawenn das hierder Speicherplatzmeiner Variablenist irgendwo Muster landensage ichokay diese Variable hat auch ?? bestimmte Adresse in meinem Speichernummerieren einfach die Bytes durchnull eins zwei und so weiter auf dieser Maschine wäre dann die letzte Nummer hundert siebenundzwanzigund achtundzwanzigBytes Speicherplätzenur wäre hier hundert sieben zwanzig ?? auf ihrem heimischen PC mit vier Gigabyte ist die letzte Nummer natürlich nicht hundert sieben zwanzigstenetwas mehres ist etwas übersichtlicher mit den hundert zwanzig Bytes die rehadas heißtdieseVariable irgendwo stehtRichter Hausnummernicht wir irgendwokeine Ahnung ?? sieben neunzig oder was ist dann dieHausnummer die Adressemeiner Variable nicht ?? kann sagen wo die im Speicher stehtund in C und C plus pluskann mansich diese Adresse tatsächlich geben lassenund damit anfangen Unsinn zu veranstaltenso eine Adresse wird in ein Zeiger gespeichertdie Zeit ja schon so als Zeiger gemaltsein Zeiger zeigten irgendwohinin den Speichereine Zeigervariablewarenwir hohen uns mal einen Zeigereine Variable Amit dem grandiosen Wert zweiundvierzigfür den üppigsten zweiund jetzt frage ich nachder Adressedie Adressezum speziellen Operatordie Adresse einer Variable glich mit KaufmannsundAKaufmannsund der Name der Variablegibt in die Adresse einer Variablenhabendie möchte ja irgendwo speichernund ich speichere die in einemBad als Zeiger in einer Zeigervariablenan der Stelle ist sieetwas unter danach versprachen sie dann etwaspingeligan die möchten auch wissen was für eine Art Element ist auf das gezeigt wird sowie das danach herausin Stern Pauich versucht das malauseinander zu größerenAren dieses Pist eine Variable in der NachteinZeiger gespeichert wirddie enthält die Adresse sozusagender steht nachher die Hausnummerdrin meinerVariablen Aund dieses in Sternchen sagen was wenn Typ den P dieses P ist ein Zeigerauf ein indischeran der Stelle ist wie gesagt C und C plus plus in der pingeligdie wollen auch wissen worauf denn so ein Zeiger zeigtmit der Schreibweise ihr Sternchen P sage ich das P auf eine ganze Zahl zeigtnicht auf ein Zeichennicht auf ein floatnicht auf einer Ebene schienstetoder von letzter Woche ist das Teilsamplees zeigt auf eine ganze Zahldas einmalangegucktichmach mal die Speicheransichtwiederauf?? findeund zwar das rammSicherheitam Ende vom rammsowie zwoundvierzig improvisiert die Zeit wird sich erscheinendas sind also zwei vierzig zu sein zweimalsechzehnzweimal sechzehn Mark zweiunddreißigAM achtzehntersteht die zweit vierzigsind es nächstes null null gewordenich brauche zwei Bytes für die zweiundvierzigin Thatcher hat auf dieser Maschine sechzehn bitweise sechzehn Bit Rechner ist Punkt also zwei Bytes um diesen in der ?? abzuspeicherndas sind diese beiden Bytesdas Bitmuster für dieer für die zweiundvierzignull null zwei Ade schreib es in dieser Reihenfolge null null zwei A steht einem Speicher von sechzehn wirddie sagen zweiundvierzigundmit dem KaufmannsundA hole ich mir jetzt die Adressewo steht diese Variable im Speicherund lege sie ab in dieser neun Variablen Pdie war ja also das ist die Adresse hier null zwei sieben C hexadezimaldas angucken hier steht die Adresse von dem erstennull zwei sieben null hexadezimalist die Adresse von dem da vorn und es geht eben weitereins zwei drei vier fünf sechs sieben acht neunABCdieses Ding steht an der Adressenull zwei sieben Cdas ist dessen Hausnummer sozusagenim Speicherder Speicher ist ja nicht so groß sie können die tatsächlich hierkönne jedem Bytes bei dieser Maschine könnte die Hand schüttelnauch nach zwanzig Bytesdas erste steht bei null zwei null nullund das letzter die Hausnummer wenn Sie wollen null zwei sieben Fdas sind die hundert achtundzwanzig Bytes und das vorletztescheint alsodie Variable A geworden zu seinmit dem Kaufmannsundhol ich mir die Adresse was die Hausnummer wo steht das im Speicherund in der Variablen Pliegt diese Hausnummer ab neunstattdass ich mit meiner OriginalvariablenA arbeite kann ich nur mit dem Zeige arbeiten für das ganze ziemlich sind sinnlos was soll ich mir die Adresseholenund dann nichts damit tun ich möchte was mit dieser Adresse tunder Gedanke istandas ich sagen kann ob die bitte zur Hausnummer sieben neunzig und Uhr da dieses oder jenes Internet ihr Zuhause achtundneunzig und O two da dieses oder jenesohne die Variable beim Namen zu nennenich nenne nur noch die Hausnummerund das ist ganz normal eine ganze Masse Smith eine Zahl mit der ich rechnen kann das wird nachher die ZeigerarithmetikunterWerbetextich kann mit diesen Adressen rechnen G drei weiter G4 zurückundtrotzdem auf diese Variablen zugreifenund was ich nun tun kann ist zum Beispieldiesesdas sich mithilfe des ZeigerzugreifeKommaund aus meiner Variablenwas rausholenich möchte der Maschine sagen gucke was an dieser Stelle stehtim Speicherund Homer das raus was an der Stelle steht das ließ sich dann Sternchen P Und-ZeichenP so schreibt manalso hier sagt der Sternchenhodenheraus was an dieser Adresseim Speicher stehtden das passt auch zu dieser Schreibweise Sternchen P ist eine ganze Zahl P ist ein Zeigerauf eine ganze Zahlwenn ich SternchenbeschreibungHonig raus was an dieser Stelle im Speicher steht mit Kaufmannsundlassen sich gebenwo eine Variable ist im Speicher mit Sternchennehmen sie denSternchen wenn sie auf den Zeiger an und kriegen was was in die Hand nehmen können was passiert tatsächlich an die Adresse Soli sich aus was an der Adresse stehtes jedoch rückwärtswenn sie die Hausnummer wissen können Sie auch unter der Hausnummer was ablegen sagt okayunter dieser Ausmaß bei Gewitter dreizehnaberdie wird dann überschriebenBeistrich dass Charismadas ist derselbe Effekt als wenn sie je geschrieben hättenPunktdas ist der selbe Effektdieses hier hat denselben Effekt als wenn sie geschrieben hätten A ist gleich dreizehndie sage ich nur nicht ausdrücklich als gleich dreizehn sondern ich sageohne mir die Hausnummer vom Aund unter dieser Hausnummer speichern die Zahl dreizehnich gleich mal in Aktionden hat mir schon den Partner auch schon so das Ticket die zweiundvierzigdrinnen jetzt hole ich unter dieser Adressezwei sieben C hexadezimalwas hier stehtseitlich der Maschine Sternchen von diesem Zeigerder Nachweise steht null null zwei Adieses außenschreib sind VariablenBeistrich die zwei ?? vierzig denn der steht jetzt ein vierzig trennenund diese Zeile sagtgehe zu dieser Hausnummerdie NPD steht und Sternchen P geht auf der linken Seite wie sie sehenauf der linken Seite heißt es dann ich kann diesem Ding was zu weiß nicht Weise dieser Haus diesem Haus an der Hausnummer sei dieser Speicherstelleweil sich die Zahl dreizehn zu ?? über die Zeit dreizehnter eintragendas wäre hexadezimalversteht er gleichnicht zwei A null null null null zwei aber jeder gleichdreizehnhexadezimaldieA ist zehnbis elfC zwölfdes dreizehn ?? stehen null nullnull dieauf der zumindestokay null null null ?? das ist dasselbe als wenn sie geschrieben hätte ??A ist gleich dreizehnder selbe Effekt?? sich jetzt über die Hausnummer zugreifedas weder für sich noch nicht so spannendspannend wird es erst mit EinfamilienhausKlammer zu rechnen wenn ich sage wie ein Haus weiter und auch da bitte die Wurfsendung abliefernund noch mal drei Häuser weiter und ab da die Wurfsendung abliefern damit entspanntdas ist die Zeigerarithmetikbis hierhin ist eine noch nichts besonderes passiertim?? der Stelle schon mal so paarProbleme aufzeigenerstes Problemist diees generell mit dem Lückentext kanndannist die Präzedenzwenn sie sowas schreibenSternchenPplus pluskönnte man meinenwas könnte man meinendie Hoffnung wenn sie das Schreiben wäre jain der selben Speicherstelledarauf vorher zwei Gedichten steht sie dann dreizehn und danach steht vierzehntenimmer das tungesternhatten was so da die dreizehntersteht jetzt die dreizehntees wird ich hoffe das jeder null E stehtdasfiese was passiert istan erzählt nicht diese Speicher was in der Speicherstellesteht hoch macht erst dasgeht das mit dem Zeiger ein zweiteres ist ganz für sie muss man auf die Reihenfolge der Auswertung achten wenn sie das wollenmüssen Club müssen Sie dieses Schreibenandas was in der Speicherstelle steht um eins wosonstgeht der erst eine Speicherstelle weiterund ließ dann aus der passiert aber nichtsin der Speicherstelle ein zweiter ging es ?? die Hausnummern als vergrößernund dann auslesenaber ich mach ja gar nichts dann mit der aus etwas anders aus ?? passieren würde man Zeiger weiter gestellt und ausgelesenaber nichts damit gemacht?? des Telefondesignersist ziemlich blödeähm da müsste dann Klammer aufdas was an der Speicherstelle steht erhöhen nicht andersrum nicht die Speicherstelle erhöhen und dannauslesendas müsst ihr zuzunehmenjetztmüsse da nur die stehenda steht nur die an der Stelle muss man Klammern ärgern sich gehörig Einheitenein erstes Problemzweites Problem für denLückentext Nummer vierjetzt ist mir Tür und Tor sind mir Tür und Tor geöffnet und irgendwo im Speicher irgendwas reinzuschreibenich kann sagen okay lege mal einen Zeigerund dieser Zeiger soll einfach an die Stellezwei drei vier hexadezimalzeigenunterschreibt man irgendwas reinkreuz und quer durch den Speicherdas wird nicht ganz so genommennetterweise immerhin muss ein Vorsicht Maßnahmen noch baulich muss sagen an dieser Stellebitte tun so als ob daeine ganze Zahlstehter Kleinkram bin ich im Detail erklärendas sollte auch ?? sein was sie bitte nicht und ich möchte nur die die Gefahr zeigen sicherlich jetzt einen Zeigerdervorgibter zeigt auf eine ganze Zahl an dieser Stelle zwei der vier im Speicher unterschreibe ich jetzt die achtundneunzig reinwenn ich nicht ganz ?? au P hat schon mal Komma dann sage ich am Anzeiger Coupsei soanKommasoKuhn steht jetzt wie's gesagt habe auf zwei drei vierund der nächste Befehl schreibt mir ganz knallhart achtundneunzigan die Stelleder Kinder nicht der könnte sonst wahrscheinlich würde irgendwas ruiniert haben was davor gestanden hat an der Stelle also Vorsichtähm wenn sie Anfang Zeiger zu arbeiten kann sie beliebig viel ruinieren