[Playlisten] [Impressum und Datenschutzerklärung]

09B.1 Fingerübungen zu Zeigern und Arrays


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

eineAufgabezu steigernverändert sich an der Aufgabe alles mögliche nochmalszu zeigen erklären kannso jetzt gerne ein Rehsofortmit zwei Werten initialisiertist drei vierfünfdann hätte ich gerne eine ganz normale VariableY dieser Lauf sechs gesetzt seinund hier kommt ja sowas komischesSternchenschon so und Kaufmannsundwas sie schon mal jetzt gesehen haben sollten?? dannder nächste sieht wieder ganz harmlos ausin die VariableU lese ich denWert des Raysan der Stelle null eineine Variable Y setzt sich auf siebenauch nichts NeuesPunkt hier kommt wieder sowas schrägesdie VariableV soll sie heißen setzt sich auf Sternchen Z was auch immer das sein magentsetzlich die Variable Z auf X wieder was ganz normalesich erhöhe Zund ich merke mir in einer Variable namensSWden Inhalt desEintrags Nummer eins vom Rezeptdie Frage istwas in U VW stehtwas welche Wertestehen UVund W danachdie das beantworten können haben sie schon so einiges über Zeiger verstanden??erste Zeile weiter klar eine Rallye anlegen drei vier fünf stehen miteinander im Speicher als ganze Zahleine Variable anlegen der zweiten Zeile sechster reinschreibenso dieses Ding war jetzt das erste bösewenn ich das schreibe ich auf der linken Seite sage ich Zist nicht eine in der zur Variableoderirgendwas Butte Variable was auch immer ZS was ganz neues Z ist ein Zeigerauf eine indische Variable sang sie mit dem Sternchenin SternchenZ ein Zeiger auf eine indische Variable was gespeichert wird sindAdresseneine Adresse gespeichert soll ich sagen die Adresse einer Hintertür variabel mit gespeichertin diesem Zeltdann die Hausnummerund weiß nicht im Haus wohnt Komma hat die Hausnummerso stell ich mir das immer vor die Hausnummer einer variablen Speicherund hier sagen siegibt mir die Adresse von Y dieses Y steht irgendwo im Speicherund das Kaufmannsund Yholt genaudavon die Adressewo steht das Y im Speicher das heißt dieses Gesetz ist jetzt die Hausnummervon Y?? ich kann jetzt nicht konkret angeben was das Z ist bei Hausmann das ist null X bla, bla, blamuss gleich mal an im Debugger?? zu Fuß sieht wo das dann abgespeichertwird aber hier wüsste ich nicht wo's abgespeichert wird ich weiß einfach nures zeigt aufYdas sagt dieseZeilen hierund gibt es zwei Artenda dran zukommen an das was unter der Hausnummer steht wenn ich den Zeiger habe das hier wäre die natürlicheArtSternchenZspreche das an was an dieser Hausnummer steht es auf der rechten Seite vom Gleichheitszeichenhaben heißt das wohl das rauswas an der Hausnummer steht zumindest auf der linken Seite habenals das Schreiben reinein Kind setztsowiewie in den as Adressaten sozusagen an wer auch immerim Haus Nummer soundsoviel im Haus Nummer Z lebtan den bitte adressierenSternchen davor das ist die übliche Artoder die erste ?? soll seine erste Art mit Zeigern umzugehensie sprechen mit SternchenvariablennameZeigernameanKomma was der Inhaltvon der jeweiligen Speicherstelle ist oder alternativ schreiben Sie den Namen von dem Zeiger Z und in eckigen Klammern null das geht auchdieses hier Sternchen Zund Z von null bedeuten absurderweisedasselbeähm an vielen Stellen ist das sehr komfortabelsie könne mich auch sagen nicht nur wir in diesem Haus lebt Z von null sie können auch sagen wir ein Haus weiterlebt oder wer hundert Häuser weiterlebtdanndurch die Klammerin den Klammern innen drin ein FA ist deshalbpraktisch nichts anderes als ein Zeiger in ganz vielen Stellen oder ein Zeiger ist praktisch nichts anderes als ein REan ganz vielen Stellen die verhalten sichweitgehendähnlich auch wieder sein grundsätzliches Konstruktionsprinzipman erfindetwas eine Rallye ist in Cund die Zeiger sindnicht so verschiedensie haben allerdings schon den Speicherplatzam eine reha auf jeden Fall Speicherplatz wenn sie ihr sagendiese ?? anlegenhatte sofort Speicherplatzdiese dreiganzen Zahlenwenn sie so ein Zeiger anlegen müssen ?? gar nicht ?? Speicherplatz dahintersteckt?? es könnte sogar seindass da gar nicht Speicherplatz dahinterstecktaber im Prinzip sind Zeiger und Details über weite Strecken identisch aus der Verwendungdas wäre die übliche Art mit Anzeiger zu redengenauer gesagt mit dem Inhalt von demwas er zeigtdas ist ?? Alternative Asta mitzuredenZ von null das was genau da stehtund nichteinfach rechts undan die fest auch nicht einfach links und nichthundert nach links auch das würde funktionierensondern das was genau da stehtdannjetzt kann man sagen was dieses hier ist setzt zeigt auf Yin Y steht sechs treffen das heißt Z von nullschlicht und ergreifend den Wertsechseben was mit X gesehen sind drei vier fünf ganz andere Geschichte Z zeigt aufYund in Y steht die Zahl extrem genau die Räume heraus und speichern sie inhabe ich einen neuen Wert in diese Speicherstelle Y einseit ich eben schon gesagtSternchenist ?? andere Artmit dem Inhaltund der Speicherstelle zu reden?? Sternchen ZZ zeigt immer noch aufYund Z hat sich nichts geändertverzweifelteHausnummerdie Hausnummer der Variablen Y derzeitzu dem Zeitpunkt war der Wert sechs in Ywird sechs rausgeholtGoogle speichertjetzt ist der Wert sieben YZ ist die Hausnummer von dem Yund derzeit die sieben wohnt ich wohl raus was unter der Hausnummer steht und VW sieben werdensoll Vergleich gleich sieben Schreiben und die oben gleich gleich sechsalleMehrdeutigkeitenzu verhindern Punktjetzt kommt der spannendeAusdruck jeder spannendste Ausdruck in dieser Aufgabe Z gleich X das zu harmlos ausähm als ob ich irgend eine Zahl zu weiß aber hierbei sicherZeiger zuX ist der Name eines ArraysZ istder Name eines ZeigerXals Name eines Arrays ist gleichzeitig ein Zeiger auf das Nolte Element ein Zeiger auf die dreibin ich das jetzt mache ist Z auch ein Zeiger auf diesen Wert ein Zeiger auf die dreijetzt Zeigerarithmetiksolche vergessen zu schreiben Zzeigtaufdreijetzt kommt die ZeigerarithmetikZ plus plus Sie können mit Zeigern rechnenbeschränkter Artanden Wert um eins erhöhen und wieder zurück speichern den Wert eines Zeiger um eins erhöhen und wieder zurück speichern heißt dann einfachein Schrittnach rechts gehen Z zeigt jetzt auf die vierdie Schritte das hatte ich auch gesagt ?? mit Essigschritte sind dann immer im Rahmen des jeweiligen datentypsinnlichenZeiger habe der aufWind zeigtihr bei der Maschine sechzehn Bitund ich die ein Schütze seid endlich wirklich zwei Bytes weiter sechzehn Bit weiter nicht nur ein Byte weiterspringt hierin ganzen Einheiten von der jeweiligenbei dem jeweiligen DatentypZ zeigt also jetzt auf die vierund nun guck ichbeim Zeiger Z nach der aktuell auf die vier steht was Z von einsrechts davon stehtauch das geht wieder in Schrittenvon den jeweiligen Datentyp weiteralso glückliche untenvon fraustegleich fünfwaspassiert wenn ihr eins stehtdas ist der Ärger bei diesen ganzen Zeigergeschichtenin C und C plus plusdas wird nicht geprüfterst wird es nicht geprüftirgendwann fällt es dem Betriebssystemauf?? habenwenn sie lokalsetzt zeigtauf das Haus sozusagenin dem die sechs wohntund hier sage ich jetzthole mir mal daswas in dem Haus rechts davon stehtich habe keinen blassen Schimmer was in dem Haus rechts davon steht ich weiß nicht mehr ob dieser Speicher mir selbst gehörtwenn ich Glück habe gehört der Speicher nicht mir mein Programm nicht und das ganz auf größere Maschinen benötigen Betriebssystemund Betriebsystemkillt einfach mein Programm dann sobald ich das versuche auf irgendwas zuzugreifenwas mir nicht gehört ?? auf dem ?? Controller hierkommt einfach in die Blödsinn raus das etwas passiert und das ist total schwer zu finden dann im Programm wenn sie solche Fehler drin habenan die ersten hundert mal die zweit gut fallender Speicher stellt zufällig das richtige stehtund beim Kundengezielt verlängert Beistrich zufällig das falsche stehtdas es echt gefährlich es wird nicht geprüft Sie können hier sonst was reinschreiben es wird nicht geprüftin Cund C plus plusandas einzige was ist hier erlaubt istSZ von null weil ich weiß das Yeine ganz normale variables und kein RE ist wenn ich wüsste das hier in von ?? dahintersteckenkönnte ich auch mit ein zwei drei arbeiten aber solange Y einfach nur ganz normaleeinfache Variable istist streng nur dieses erlaubtder Compiler wird aber nicht merken wie gesagt der Compiler bis sie merken wenn sie das machen erste Kunde wird vielleicht merken das es nicht so hübschein grundlegendes Problemin C und C plus plus??inJapan sie Sharp wird das insbesondere ?? Klammer zu ich habe das knallhart abgefangen wenn da wasdrin steht was nicht geht gibt's was auf die Fingerandieses Buch wird er nur ein einziges Mal zugewiesenhier guckte sich den Zeiger an der EZ stehtdie Adresse die Zeiger Z steht oder sich an ?? holt das was an der Stelle stetsschreibt es in die Variable Buch einen der nächste Schritt erledigtes passiert danach nichts mehr mit USS keine dauerhafte Verbindung dieses Limit ein einziges Mal ausgeführtgenauso dieses hierwassteht in den Zeiger Zwir holen die Zahl raus wieder steht an der Stelleauf die der Zeiger zeigtund schreibt in V rein das passiert hier ein einziges Mal und dann nie wiederdie Variable V wird einmal mit einem Wertversorgtund nicht ständig dass es keine lebendige Verbindung das passiert nur ein einziges Mal hierund das ähnliche untenzu VW werden alle nur ein einziges Mal geschrieben und bleiben dann auf den Werten des ?? keinedauerhaften Verbindungen sowas gibt's auchin abgefahrenenSprachen aber ist der Wiki Schritt für Schritt von oben nach unten durchund hat nur einmal dieses U einmal das V einmal SW zugewiesenHerrn?? gibt einen Unterschied an der Stelle zwischen den normalen Variablen und den Zeigernin der Vorstellungdiese UV W sind ja ganz normale Variablen erschien ganze Zahlen drinund werden auch nie wieder er selbst im Weg ?? ganz normale ganze Zahl reinwienie schreibe ich drüberdannmit Zeigern ist das einer Geschichte wenn ich hier zum Beispiel fragen würde was ist der Inhaltwas ist der Inhalt vomZeiger wie das ganze natürlich ändern worauf der Zeiger jetzt seichtan derselben Hausnummer kann er sozusagen andere Zahl eben das könnte sich ändern in der Tat??dass das Institut V und W her ja nicht ahnendiewerden wirklich nur ein einziges Malgeschriebenbeidenen die Bagger reinX anlegenerste SchrittDirectXsteht ab hexadezimalneun F sechsnun Y anlegenwird sechs TäterinnenY steht ab neun F vier hexadezimalSpeicherausweisevor dem Rayjetztdie Adresse von Y in Z speichern Z hat wirklichdiese Hexadezimalzahlneun F vierdie Adresseals Inhaltunter welcher Hausnummerfinde ich Ynächste Schritt ich hohledas auf das Z zeigt worauf zeigt dieses hier neun F vier was liegt an dieser Adresse das hole ich in die VariableBuch einGehabe des in Variablen gut trennenwie behauptet O ist gleich sechsnun ändere ich das was in Y stehtauf siebenZ zeigt immer noch auf YZ hat sich quasi die Hausnummervon Y gemerktneun F vierich habe geändert wer im Haus wohnt sozusagen der ?? sieben reingeschriebenmit Sternchenzeigerein Sternchen hiervon hole ich das was dortdrin steht also die sieben die landet jetzt in V?? ist die sieben sind V gelandetderzeit zeigt Z auf diese Variable Y wohl nicht die Variable Yneun F vierhexadezimalmit dieser Zeile sage ich zeige aufX nämlich neun elf ?? sechs das passiert mit dieser Zeileneun F sechserzeugt dahin wo X im Speicher liegtjetzt die ZeigerarithmetikC plus pluswas wird passierenwenn ich Zentrum in Anführungszeicheneins erhöhedas ist die wörtliche Bedeutung Z um eins erhöhen was passiert mit demWert was passiert mit der Adressedas ist das überraschendenull elfnull neun Facht Komma geradegeht ja in ganzen Einheiten von IntentionsetztChris Weiß das System Z zeigt auf eine ganze Zahlganze Zahl belegt hier zwei BytesC plus plussage ichals nach rechts gehen ein zweiter gehen aber in ganzen Zahlenund Speicherstellenvon ganzen Zahlen weiter gehen als um zwei Bytes weiter Gene nimmt nicht die Adresse widersteht ?? dir eins drauf sondern ergänzt lediglich ein Schritt von dem Typ weiter an dieser Stelle also zweidas ?? überraschend sein ?? sehen so gehört sich das ja auchder Eintragrechts von dem mit Nummer null der Eintrag mit der Nummer eins ist bei neun F achtneun F achtdas gehört es zum nächsten Eintrag gegangenund hier geht der jetzt zum Eintrag rechts von demEintrag mit der Nummer einserste Eintrag wahrscheinlich aus ?? Wege zum Eintrag rechts von die mit der Nummer eins also die mit der Nummer zwei und oder den Wert raus fünf und schreibt das entweder ??dass sie die fünfFragewas passiert wenn ihr zwei steht verlässliche ?? ja nicht so groß istund ich würde sagen auf dieser Maschinepassiert dann einfach Blödsinn schlicht und ergreifendguckendenWert habe ich nirgendwo eingegebenoffensichtlich zwei tausend sechs hundert sechs es ist einfach BlödsinnFrage war was wir welches C plus plus weglasse dann geht es ja wiederRNZ zeigt auf den Noteneintragvon X das ist die drei und hier unteneins zwei Mustern die fünf rauskommenaberer weiß Komma sichert aber nachsollte diefünf rauskommen so hört sich dasund die nächste Sacheschreibt man hier jetzt in anderen wird fünfzehn schon gleich zweiundvierzig?? hat setzt die Adressevon Yam an dieser Stelle steht ?? Y was anderes drinnenund hier wird natürlich der aktuelle Wert geholt der da stehtwas die aktuell in der Hausnummerin dem Haus mit der Hausnummerdie von Z gegeben ist und das müssen sind durch zwei vierzig sein und nicht mehr sechs an der Stelleda geht's danndynamisch wenn sie vor gewissemRahmen dynamischdafür sind diese Hausnummern ja da ich Google nichtsofort Anwenderinnenwohnt sondern ich merke mir nur an der Stellebitte nachguckenals sie hier das wo müsste jetzt die zweiundvierzigdamit die zweiundvierzigZ verweist auf das Y Komma das Zverweist auf das Yund Y steht jetztzu diesem Zeitpunkt zweiundvierzigdrinund die zwei vierzig kleines Ukopiert nicht an