[Playlisten] [Impressum und Datenschutzerklärung]

K05 Zeiger und Arrays


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

malganz einfach angefangen mit den zeigen wenn ich eine Variablehabedann kann ich sie fragenwo denn diese Variable im Speicher stehtund das ist dann ein besonderer Datentypin C als sie können echte Daten habenganze Zahlen in sie könnengute Werte haben sie Kennzeichen haben sie können müsse im Dienst haben oder Personen habensie können aber auchdannin in zehner Variablen haben die ihnen sagen wo andere Variablen stehen das sind die Zeigerwenn ich sageKaufmannsundAgeht nicht mit dem logischen und zu tun sondern ist ?? ganz andere Bedeutung für dieselbe Zeichen Kaufmannsundwenn Sie das sagen Kaufmannsund Agibt in C zurückwo denn die Variable A im Speicher steht das kann ich mir in anderen Variablen merkenund wie angedroht dafür jetzt ein speziellen Typein ZeigertypSternchen in Sternchennimmt dasVerfahrenbasiert auf Anhieb haarsträubendausdas folgendesvon der VariablenAsag mir doch mal wo die im Speicher steht was deren Hausnummerauf einer Metaebene?? möchte den Wert wissen der Variablen A ich möchte wissen wo die stehtunddas ist dann die Hausnummerspeichert diese Hausnummerin meiner neuen Variablen PP ist also keine Zahlim üblichen Sinne kein guter Wert und kein Zeichen P seiner Hausnummer ein zeigerresistentenanderen Typ in Sternchen ein Zeiger auf eine ganze ZahlP ist die Hausnummer einer ganzen Zahl Sie wollen das ?? Steinam?? ranken das anzweiundvierzigHammer deinem Radrennenjetzt wo ich mir die Adressevondieser Variablen Adass es die Adresse sehen wozu man Hexadezimalzahlbrauchtdie Adressen typischerweise können Sie mal angegebenweil der Speicher ja auch zweier Potenzen großes S?? des ?? der sehr komischen Adressen in ZehnerpotenzenanzugebenamSpeicher selbst angucken?? du?? Humanso muss ich nachgucken beim neuen FCDanzigsind neunelf nulleins zwei drei vier fünf sechs sieben acht neunhexadezimalABCzwei Azwei mal sechzehnsind zweiunddreißigArten zehn zweiundvierzig hier steht meine zweiundvierzigWasserzeichensagt uns das System nebenbei ein Sternchen wäresie nicht möchte das die Zahl ist aber alsSymbol wäre es ein Sternchenund in dem Psteht jetzt diese Adresse neun FChoch hat sich den Compiler entschiedeneine Variable A abzuspeichernin dieser an dieser Stelle unter dieser Adresse neun FC unter dieser Hausnummer neunundneunzigbis dahin sieht das ziemlich schwachsinnig aus wozu sollte ich das machen wenn sie nur einzelne Variablen habenist es im allgemeinen nicht möglich damit zeigen anzufangenund jetzt jetzt noch mal an der Stelleam Mast mit den einzelnenObjekten hier leichter zu verstehenwennes reicht mir jetzt dieser Hausnummer zu wissen um damit zu arbeitenmuss nicht dieVariable selbst in die Hand nehme ich kann mit der Hausnummer weiter arbeiten ich kann zum Beispiel sagendas was an dieser Stelle stehtschreibe doch mal bitte in meine Variable Z so sehr das ausPdamit sagen sie dir zu der Hausnummerund wohl raus was drin stehtdas Sternchender Compiler weiß aber was da drin steht ist eine ganze Zahl das habe ich mir vorher gesagt die Hausnummereines einer ganzen Zahlhiermit sagen Siebitte zu dieser Stelle gehen und rausholen was drin steht dieses setzte zwei fertig seindas geht auch umgekehrt sie können sagenan dieser Stelle an dieser Hausnummer Sternchen B bitteeine dreizehn schreibenso sieht der Zugriff dann aus überZeigerdas Design zeigen ein Pointereinsickern mit dem Pointerwar an diesem an dieser Stelle diesenWasser drin steht oder sie können schnell aufschreiben was stehtnichtalsoich wurde die Adresse der Variablen A steht in neun FC hexadezimalhier sage ich jetztdieses Systemschreib mir doch hole mir doch was an der Stelle stehtneun FCund Schreiber das NZ RheinÜberraschungangeblich steht ?? wussten schonoder sie können auch umgekehrt sagen an dieser Stellean der bisher die zwei vierzig gestanden hatan dieser Hausnummer schreibe bitte die dreizehnwas sie natürlich jetzt keiner Zeit könnten jetzt Mitglieder aufklappenermacht das Entwicklersystem das für sie selbst bezeichnen was da steht an dieser Stelle null neun FC ist die Hausnummer und eine Stelle steht dreizehnKomma DC Nummer im Speicher nachdie MigrationMemoryin München eine Stelle ?? null neun FCnicht ganz so flott null neun FCnull die sich erinnern an hexadezimalbesteht die dreizehn Prozent an zwoundvierzigder dreizehn ersetzt im Speicherdas ist daselementarsteWasser mitZeiger machen kann sie können nach der Adresseeiner Variablen Fragen im Speicher und können dann über diese Adressezugreifender Trick ist da nachherdas nicht mit einem einzigen Ding zu machen sondern diese Zeiger zu verwenden um querbeetdurch den Speicherzugriffzu machennicht nur auf das eine Ding sondern einmal auf das eine Ding dann auf das nächsteimmer dasselbe Programm zu schreiben schreiben immer Sternchen P ist gleich soundsoviel oder sonst wie verstärken die denn dann einfach den Wertder NP drin stecktspannt wird zum ?? bewässert wenn Sie eine Reihe haben soll ?? mal inBunterstehenjetzt einder Schlinge zu zahlen drin?? besser nullnull einszwei?? damit auf ?? verbessert ?? zehn elf zwölfdreizehn solleine ?? mit vier Zahlanda hat sieeine sehr eigenwilligeArt der mit diesem Erregung zu gehen wenn sich ähnlichdiesenNamenalleine verwenden von dem ist das ein Zeiger ?? können sagen insist gleichdas was an der Stelle B stehtdieser Name von dem Gerätist ein Zeiger auf den vordersten Eintragdass es eine derseinerzeit genialen Ideen in C gewesen??toll fürrechenschwache Systemehaarsträubendwenn manFehler finden willmanaber seinerzeit fürs für sie effiziente Arbeit mit all diesen Sachenwie geniale Idee der Name eines Arraysist ein Zeiger auf dasvorderste Ding in diesemdenn dieser Name B ist ein Zeiger auf diese zehn wenn sie das Schreiben Sternchen Bkriegen sie für das gut zehnund Gedanke inC das Q ist gleich Cder Name eines Arrays ist ein Zeiger auf das erste Ding in diesem so funktioniert sieetwasVersand das Grundprinzip PC funktioniertandas kann man jetzt weitertreibenwenn ich wissen will wo der zweite stehtim Speicheram?? sie noch dran erinnern wie kriegen Sie den zweitenüber Zeiger wie kriegen Sie einenZeiger auf den zweiten soll auf den Eintrag mit der Nummer eins wie kriegen Sie ein Zeiger auf den Eintrag mit der Nummer eins in diesemLeertaste Gedanke gehen von B ein zweiter wenn Sie sagen jetzt gib mir doch maler es gib mir doch mal was steht wenn ich eins weitergehenin der Formdass es dieseominöse Zeigerarithmetikvor der alle Leute zu Recht Angst haben ?? kann sichgrandios kaputte Programme damit schreibenB ist ein Zeiger auf das erste in diesem wäre der Name des Arrays ist ein Zeiger auf ?? von seinen vordersten Eintrag erste null der ?? auf den vordersten Eintragwenn sie einst dazu addierenließ das C soals ob es zum nächsten Eintrag geht und wenn sie zwei dazu addierenzum nächsten und so weiter das nennt sich ZeigerarithmetikB ist ein Zeigerund ich arbeite jetzt mit dem Zeiger auf den Zeiger gierig ein ?? ist aber nicht ihr ein Byte weiter um sie total zu imitieren sondern Leerzeichen hiereinmaldie Größedieses Datensatzesweiter ich die um ein in zwei Tintenfass und zwei bei zwei ?? in sechzehn Bit hatdas es die Zeigerarithmetikwenn sie auf ein Zeiger was addieren zu bringen wird auch insoweit Zeiger was addierenheißt das G um soviel Hausnummernweiterwieder angegeben istund zwar komplette Häuser nicht in Bytes nicht plus ein Bytes sondernso vieleHäuser weiter wie diese Datenstruktur groß istalso hier tatsächlich dann die elf das groß L vergeben versusplus drei musste die dreizehn aus Komma ihr gehe ich von dem Zeiger auf das vorderstedrei weiterdreimuss also dreizehn aus er muss dreizehnes?? dreizehntenwenn Sie den Bogen haben ?? das mit den Zeigernverstandendieses haarsträubendich weißaber das ist sodas Grundprinzip hinterzieh das man es Base und Zeiger miteinanderin gewissen Rahmenaustauschen kannals wenn sie das Schreiben ein ZeigerplusirgendetwasAnzeige minus irgendetwas gehen sie in ganzen Häusern weiterhin bei zweiteres sei denn es ?? eine Zigarette ist ebenfalls weiterKind ist gehen siezwei ?? dreimal die Größe von Wind weiter wenn es hierdann Struktur wie eben gesunde Person mit sich Beitzdann und schreiben dann plus drei dann würden sie dreimalGedankenstrich ?? weitergehengenau das wieder vor gute Frage was passierte mit den minus drei weilich dir jetzt bitte zehnvon der zehn aus drei nach linksspanntamwenn sie das machen ging sie im günstigen Fall einen Absturzund im ungünstigen Fall einen blödsinnigen Wertimmer neun auf dieser Maschine ein bisschen werde gespanntbesinnen wird auf dieser Maschine keinen Absturzaneines der Probleme der Zeigerarithmetiksie können jetzt hier wild durch den Speichel telefonisch rannte nicht Minuszeichen die von Schrader minus drei Millionen oder minus drei Milliardenirgendwo weiterandas nicht wirklich bekannt und in den modernen Sprachen dann auchunterdrücktdas führte vor dem Absturz ?? das tut in C und C plus plus für das nicht zwangsläufig zum Absturz je nachdemworauf man zugreift gibt's Absturz oder nicht mit ?? und kleine Stückchen nach links oder rechts gehen im Zweifel zwar keingenauso unsinnigwie die minus drei wäre natürlich wenn sie plus vier Schreibenweiter versuchen würden den nächsten Jahr zu zu Raffinessen zuzugreifen es aucham?? insofern Vorsicht sowas nur mitSchürzePunktdas ist extrem effizient aberhalt gefährlichdas kann man diesen alten Zeigern Anton das kann sie auf diesem die ANTUN wobei es bei dem Tier vorneschwachsinnig wäre wenn sie ?? haben und dass wir versuchen würden?? undVist gleichAuswahl soC++nehme den Zeiger agiere einst dazujetzt gucken was verstehtP zeigt auf die zweiundvierzigauf die Variablen der ?? zweiundvierzigsteht darauf zeigt Pkönnen wir sagen okay zeige bitte ein Haus weiterein Gezwitscher weiterund dieses V soll jetzt bitte das sein was da stehtversteht sonst was ihr keinen Schimmer was verstehter sich zusammenreimenbei der Compiler typischerweise diese Variablen alle schön nebeneinander in die Häuser packen wir da was es überhaupt nicht garantiert was verstehen also das hierist schoneine Terrasse schon plötzlichweil sie nicht sicher sein können was da stehtich weiß was an der Stellean der Stelle steht auf DP vorher zeigt ?? die zwoundvierzigich weiß ?? überhaupt nicht was der Hausmann daneben stehtist das Nintendo ?? ist das Teil einer Person einer Zeichenkette keine Ahnung überhaupt Speicherplatz auf dich zugreifen darf am ?? das ergibtUnsinn oder Absturzwar dieses Plus Plusvom Zenit im Prinzip gibt anderweitig nur Sinn wenn sie so eine Rallye haben und ?? RayKomma der schon TonKuhnoder Nico Richter??istso ein Zeiger sich sagen ?? mal ein Zeigerder aufden vordersten Demirel zeigtweder Name des Raysist ein Zeiger auf den vordersten Murray das ist es selber die EUund Baku darf ich jetzt zum Beispielerhöhenund ?? wird auf die elf zeigendas gemacht habenoder wenn Sie schreiben ?? U plusplus gleich zweiMeternach dem auf die elf zeigen und nach dem Plus gleich zwei bitte auf die dreizehn zeigenimmer noch minus minus?? wieder ein zurück zeigte auf zwölf überzeugen uns vielleichtamWerk ?? oderruhig mal den Wert der Bestellung stehtdas müsste jetzt alsoStaaten vom Anfang einfach rechtsnochmals zwei nach rechts ein zurückmüssen die zwölf Sackdas ist an dieser Stellenur eine formale Spielerei das wieder ?? gespannt was man mit Listen arbeitet es hat sicherder letzten Vorlesung irgendwann vorgeführt wenn sie mit Listen arbeiten und sich noch Zeiger merkendann wird's was er mir gespannt wie es das jetzt einGlasperlenspielso?? null neun EE Begründer Marco könnenB steht verrät uns nichtanKomma keinen Speicher nachguckensolltedie Anfangsadressedes FSB seieinmal wie null neunnull neunnull neunähdas ist unsere zehnzwei Bytesdas ist meine ganze Zeit zehnangefangenbei null neun äh das ist eine EFals Event das Gerät an das es mein zehnzehnhintere bei Dollar und null das vordere weiterihr kommt elfzwölfdreizehn ?? versteht man Raywohntwas ich gesagt habeder Zeigersollgleich den Zeiger besenrein auf das vorderste zeigen also hier auf dies nur A null neue Zeile wasmachtnull neun Ejetzt sage ich dir ein zweitertatsächlich jetzt nicht zu null neun IF Ergebnis ein Byte weiter Sonne geht eine Ente Jo weiter dieser Maschine zwei Byteeinmalein Einzeltäter weiter mal sehen einen Becher weiternull neun F nullnicht ähnlich den sondern den vier null neun elf null sieben vier null neun F neun Zeit wirklich auf den nächsten die elf?? sage ich jetzt jemals zwei weiter??null neun viernull eins zwei drei vierzeigt mirauf den letzten in dem Essay hier sage ich immer wieder ein zurückF zweieine null eins zwei er zeigt auf die er zeigt auf diezwölfund da es sich jetzt die zwölf raus wo das Sternchen heißt ja sprich das an was in dem Haus steht an dieser AdresseSternchenzeigersagten was möglich istan der Stellezum Schreiben und zum Lesendie zwölfdas ist das noch gute Ergänzung zu dem was ich LebensinteressenTrakt gesagt habe wenn sie einRecht haben greifen sie mit eckigen Klammern auf die Einträge zu wenn sie eins Takt haben schreiben sie Punkt Bezeichnerund zuzugreifenauf dieEinträgein gewisser Weise können wir sagen wenn sie ein Zeiger haben schreiben Sie Sternchen hervorund greifen darauf zu warten Register stehthundertprozentigder Senior findet sich vielleicht so in der Art an Sternchen gibt Ihnen aus den Zeiger das echte Dingam ?? muss mit Infodesignsind Sternchen natürlich noch ganz andere bedeutende Städtchens auch das maldas Sternchen alleinevor irgendeinem Dingheißt ein Zeiger der rechts steht verwandeln das richtige Ding ist kein mal Zeichen mehrArm und das KaufmannsundSense stellt auch keinbesonders logisches und auch wenn es hier so alleine steht in Vorzeichenminus fünfund dasie so alleinstehend heißt es ihn gibt mir die Adresseall das kann ?? auch wieder applizierten Sachen durchziehen ?? mit Inselgewinnungnun undFloß und habe es gibt dann auch mittagsdamit sammeln spannendan das sich die Adresse eines Fraktionund dann vielleicht Reichstags weitergehend zu weit aber das von Smith genauso wie hier mit deninsdass eslogisch durch konstruiertwenn Sternchen gut für das Ding steht was wirklich an dieser Hausnummer?? lebt dann können Sie jetzt auchalle möglichen Schweine rein damit veranstalten und sagen das Ding was an dieser Hausnummer lebtbitte um eins verringernoder sie können sagen was an dieser Hausnummer lebtsoll bitte zwoundvierzigwerdenoder sie können sagen PunktÜber es andie Variable es soll seinwas an dieser Hausnummer lebtundsiebzehndas BeistrichvorKommaals erstes die dreizehnter trennenKomma soweitplus zwei soweit ?? eben schonsoda steht jetzt immer noch diees immer noch die zwölf trennenan warum schreibe ich in Klammern aus folgendem Grund wenn ich das ohne Klammern schreibensich auf Anhieb nicht was gemeint ist der der standardlichtesfest aber ehrlich gesagt etwas aus wenn ich mir die das Schreibenweiß ich nichtob der Compilernicht das Verstehen für sich aus müsse nachgucken also der Compilerkönnt ihr auferstehen verringere den Zeigerund dann hole was da stehtdas kommt so selten vor dass ich sie auswendig weißalle Schrank mit Klammern und bin auf Nummer sicher deshalb die Klammernerholen das was drin stehtund danachoder greife auf das Zusatz ?? Gesang greift auf das zu ?? was das gut zeigt bisher die zwölfund dann verringere das um eins was der stetig den Zeiger verringern sondern was der stehtin Klammern ist das eindeutig auf diesen Fallsicherheitshalberschon mal guckenwiewir wieder ich mir die zwölf Bindestrich elf hat das verringert was drinnen stehthier sage ich das was da steht einfach auf zwoundvierzig setzenBeistrich die zwei vierzigund bei dem hier unten sage ich was der stetszu den bittesitzender Tieren und den es speichernspeichernzweiundvierzig Sitzen siebenundfünfzigJahre den an dieser Stelle müsste ich eigentlich auch vorsichtig seindas weiß ich noch auswendig dass dieses Plus nach dem Sternchen ausgeführt wirdamhaben sie das nicht wirklich machenwas sollten sie dann sicher zahlreiche unten veranstaltenalso wissenKomma dass ich täglich macht sollte sie das aber schreiben Sternchenin Klammernplus siebzehndamit siesichergehen könnendass der Compiler nicht verstehtSternchenU plus siebzehnkönnte auch verstehen?? als Sternchen unter siebzehndasssie heißt Gamespeichersiebzehn Stellen weiter von der Hausnummerund dann?? er greift auf das zu Wasser steht an dieser Stelle sitzen stellen rechtsund dieses hier vorne heißtGreif auf das zu was an der aktuellen Stelle steht und dann entweder siebzehn auf den Wertdieses Ding hat auf den wir in dem Häuschen steht komplett andereBedeutunganSinne die so schreiben auch auch man sich täglich machenversetzt man ?? doch lieber Klammer zu Punkt einmal im Standard nach was denn nun giltin welcher Reihenfolge müssen wir das in dieser Stelle ist netterweise das Plusschwächer bindend erholt erst den Wert rausmachte das Plus anKomma das ganz fies schreibtwieso schreibenkönnen sie Leute in den Wahnsinn treibenden ?? wird natürlich trotzdem so machen das erst in der das Buch holt und dann siebzehn agiert und nicht er siebzehn auf den Wert vonaminsofernist die Schreibweise in C ein bisschengestaltungsbedürftig