Habe schon gespannt auf die Episode über Pointer gewartet. Ich fand es super erklärt und bin auf deine Anwendungsbeispiele gespannt, weil ich mich bis heute nicht so wirklich mit den Pointern anfreunden kann.
hiho, auch wenn ich (von der Performance abgesehen, noch keinen Anwendungsfall habe stellt sich mir folgende Frage. Wie sieht es aus wenn die Zahl größer als die 8bit ist? Immerhin würde sie dann ja eine weitere Speicherzelle benötigen, der Pointer aber zeigt auf die ....fda8 (in deinem Beispiel).
zZSkarbogZz Gute Frage! Die Antwort ist, dass du mit int* angibtst einen Pointer auf int zu machen! Genauso geht auch float*, dann machst du einen Pointer auf float. Daher weiß der Compiler, dass du beim bearbeiten des inhaltes des int* auch die nächsten 3 bytes (oder wie groß int auch immer ist) mitbearbeiten möchtest.MfG
***** Alles klar, also muss man sich dann darum nicht kümmern.Besten Dank für die flotte Anwort :)Btw. bisher eine sehr gut strukturierte und vorgetragene Reihe!
Es gibt Pointer für alle primitiven Datentypen. Ein Pointer, egal für welchen Datentyp belegt bei 32bit-Anwendungen 4 Byte, bei 64bit-Anwendungen 8 Bytes. Ein Pointer des Typs char* liest/schreibt allerdings einen char-Wert. Ein Pointer eines long long* einen long long-Wert (der also hier im Beispiel die Speicherzellen von ...fda8 bis ...fdaf betrifft). Man kann durch Casting aber auch z.B. nur ein Byte eines ints laden. Das ist z.B. nützlich, will man Werte in umgekehrte Byte-Reihenfolge laden oder schreiben (char val = *(char*)64bit_ptr; lädt das kleinste Byte eines long long)
Nicht sicher ob du das hier liest aber 1:20 bei int Zahl und in dem Speicher wird 100 0 0 0 eingetragen. Ich dachte es wäre in hex gespeichert? Wie würde es aussehen wenn man zb den Max wert für zahl eingegeben hätte (2 Mrd). Wie würde der 4 byte block dann aussehen? Bin nur bisschen verwundert wieso 100 0 0 0
Ich habe noch eine Kleine Frage: Wenn man einen Pointer erstellt wird dabei eine eigene Variable erstellt. In dieser Variable speichert man die Speicheradresse (&) der anderen Variable ab. In der Speicheradresse steht ein x (0x7ffc4f33300) Integer können doch nur Zahlen speichern, wie ist das möglich? int Zahl = 100; int* Pointer1 = &Zahl; std::cout
Aber eine gewisse Ähnlichkeit zu Referenzen gibt es doch schon, denn wenn man doch das & vor die Variable beim Funktionsaufruf schreibt, dann wird ja nicht der Wert sondern die Adresse übergeben, oder? Da dann ja in der Funktion der Wert an der Adresse der Variable verändert wird und somit auch der Wert der Variable, oder?
Dominik Ernst Man kann das gleiche Verhalten sowohl mit Pointern als auch Referenzen erreichen, das stimmt. Der unterschied liegt in der Betrachtung was passiert. Beim einen wird die Speicheradresse übergeben, beim andern die Variable selbst. Unter der Haube wird natürlich trozdem in beiden Fällen die Speicheradresse übergeben, aber der Programmierer bekommt im einen Fall eben nichts davon mit. MfG
mal ne frage sind eigendlich die Speicheradressen all vordefionniert das würde ja bedeuten das die ja auch noch gespeichert werden müssen un das ist echt viel platz.Oder werden die Speicheradressen immer je nach Programm vom Prozessor manuel zugewiesen. Würde mich über eine antwort freuen.
Jeder Prozess erhält gewisse Speicherbereiche (Memory Regions). Diese werden beim Start eines Programms festgelegt (Größe, Zugriffsrechte, Start, Ende). Im Stack befinden sich automatisch generierte Pointer, damit der Kernel weiß, wo er hinspringen muss, um das Programm auszuführen
Minute 5:40.. ich wollt grad fragen.. "Mensch, was bringt das denn bitte?" Aber gut, bin ich mal gespannt ^^ Dafür andere Fragen: 1. warum sind pointer wieder datentyp abhängig? Nur zur Sicherheit, und halt damits type safe ist? 2. Kann ich einen Pointer auf eine x beliebige speicheradresse machen? Also kann ich einfach irgendeinen stuff meines arbeitsspeichers manipulieren, und damit eventuell das betriebssytem zum absturz bringen oder sonst was? Oder gibts da irgendwie nen scope oder so, sodass ich nur auf den bereich zu greifen kann in dem quasi mein programm läuft? 3. Frage 2 nochmal, aber das gleiche mit arrays - geht das? zB die stelle des zugriffs so ändern, das ich "aus meinem programm raus bin" ? 4. Was passiert eigentlich, (ja ich kanns auch ausprobieren.. mach ich wohl gleich mal.. aber trotzdem..) wenn man variablen "überlaufen" lässt? zB in ints zu große werte speichert (durch zB inkrementierung) ? Bei java springt die zahl ja einfach ins negative über..
1.) ja zur Sicherheit , wobei es da so etwas wie void pointer in c gibt , die dann Typ unabhängig sind wird zum Beispiel in der c Funktion malloc verwendet so weit ich weiß ... 2.) es gibt eine Begrenzung , und zwar laufen quasi alle Programme im Computer unabhängig von einander (virtual mode der CPU ) . dabei bekommt jedes Programm quasi seinen eigenen Arbeitsspeicher und hat auch nur rechte darin ... Ist jetzt noch nicht so genau erklärt von mir aber vll hilfts schon weiter ... 3.) ja auch bei arrays muss man da aufpassen (wurde schon im Video zu c arrays gesagt) aber intern macht der []operator bei den c arrays nix anderes als den pointer um die größe des Datentyps zu erhöhen und wenn das halt nicht mehr in dem array drin ist Pech ... Als würdest du den pointer irgendwohin in den RAM (deines Programms ) zeigen lassen ... Führt dann meistens früher oder später zum Absturz ... 4.) ja integer aller größen kannst du überlaufen lassen sollte gleich sein wie in Java ...
Maksim Rotmann Grundsätzlich stimmt alles was Jan Krae gesagt hat. Außer 4.:In C++ ist der überlauf von Variablen im Standard nicht definiert! Das heißt C++ legt hier kein Verhalten fest, es könnte theoretisch also alles passieren. Die meisten Compiler handeln das dann aber ähnlich wie Java. Dennoch sollte man aufpassen, um Plattformunabhängig zu bleiben, niemals in so einen Fall zu laufen.In solchen Sachen unterscheidet sich C++ und Java einfach deutlich. In Java kann man etwas einfach testen und weiß danach die Antwort, wie es in Java nun ist. In C++ hast du nur die Antwort was dein Compiler in dieser Situtation mit den gegebenen Einstellungen macht. Ob das nun definiertes Verhalten ist kannst du nur rausfinden, indem du im Standard nachliest (oder danach googlest).Void Pointer bekommen übrigens noch ihre eigene Episode (36).
***** da mus ich wiedersprechen, es ist schon definiert, nur halt nicht im c++ da es bereits im zweierkomplement definiert ist, also so wieder computer zahlen speichert. das ganze kann man sich wie ein kariertes blat papier vostellen. wenn ich 4 karos zur verfuegung habe kann ich dort werte von +999 bis -999 drinne speichern. da der computer nur 0 und einsen kennt waeren das bei 4 karros +111 bis -111 und da das vorzeichen auch als 0 und 1 dargestellt werden muss haben alle positiven zahlen eine fuehrende 0 und negative zahlen eine fuehrende 1. wir haben jetzt also volgende binaere zahlen: 0000 -> +0 1111 -> -1 (unsigned 15) 1110 -> -2 (unsigned 14) 1101 -> -3 (unsigned 13) 1100 -> -4 (unsigned 12) 1011 -> -5 (unsigned 11) 1010 -> -6 (unsigned 10) 1001 -> -7 (unsigned 9) 1000 -> -8 (unsigned 8) 0111 -> +7 0110 -> +6 0101 -> +5 0100 -> +4 0011 -> +3 0010 -> +2 0001 -> +1 0000 -> +0 wie einem jetzt vieleicht auffaelt haben wir ansich erst einen ueberlauf von -1 zur +0. das verhalten ist hier genau so wie der cast von float auf int, nachkommerstellen werden abgeschnitten, so wie alles was nicht in die 4 bit heneinpasst verfaellt. warum grade zweierkomplement, computer koennen nicht subtrahieren nur addieren, wenn etwas subtrahiert wird wird das zweierkomplement addiert, also bei 5-2 macht der computer dadraus 5+(-2) oder in binaerer form bei 4 bit 0101+1110 = 0011 und bei unsigned wird der computer angewiesen das vorzeichenbit nicht mehr als vorzeichen zu betrachten so das es nur noch positive zahlen gibt dafuer aber doppelt so viel positive zahlen. wir haben bei c++ also sehrwohl einen sehr genaue definition was bei einem speicherueberlauf passiert, dies passiert aber nicht auf compiler ebene sondern auf maschienenebene weshalt es nicht in der c++ definition definiert werden muss. warum es bei java definiert ist kann ich nur vermuten, da ich bei java nicht so viel erfahrung habe. bei java laeufen die programme ja in der javaeigenen vm und nicht direckt auf der maschiene, so dass das verhalten in der vm nicht vorhersehbar ist und deswegen im compiler definiert werden muss. hoffe das is so einigermassen verstaendlich erklaert
mattze90th Der Prozessor muss aber nicht das zweierkomplement benutzen! Das ist zwar heute Standard und benutzten wirklich 99% aller Prozessoren aber es gibt immer noch randgebiete in denen das einerkomplement oder "sign and magnitude" verwendet werden. Daher kann der Standard dazu nichts sicher sachen, ergo ist es nicht definiert. Zwar kannst du davon ausgehen, dass das zweierkomplement benutzt wird und in den meisten Fällen hast du damit auch absolut recht. Aber irgendwann knallt es dann halt. Mir ist auch klar, dass deine Version an den meisten Schulen/Hochschulen/Unis gelehrt wird. Der Standard hat hier aber nunmal recht, siehe Paragraph 4 und 5.
***** naja, da das betriebssystem (wenigstens windows) in 32 bit eben auch keine 8 gigabyte benutzen kann... schließt sich das letzten endes doch aus ;)
Kann man statt int zahl = 100; int* pointer = &zahl; *pointer = 15; auch int zahl = 100; *&zahl = 15; schreiben? Man könnte natürlich einfach zahl = 15; schreiben aber mir geht es ums Prinzip ;)
KarabinLP Ich GLAUBE das müsste gehen. Habs aber noch nie probiert, weil man das in der Praxis natürlich nicht braucht, eben so wenig hab ich im Standard nachgelesen ;)
Ich weiß nicht was du damit meinst. Doch er ist, aus logischer Sicht, ein 8 Millionen Turm in diesem Fall. Meinst du vielleicht die Memorypages des Betriebssystems?
soweit ich weiß, ist RAM matrizenartig angeordnet, also mit Zeile und Spalte, also ist es ja ne Tabelle und keine eindimensionale Ansammlung von Werten
Erstmal: Nein das bin nicht ich auf meinem Profilbild (einfach weil man ja öfters als Kiddie dargestellt wird oder so), sondern ein Google-Bilder Bild. Nun zu meiner Frage: Ist es also so, dass wenn ich int bla = 100; int bla = 200; schreibe, 2 verschiedene Speicherzellen benötigt werden? Wenn ich mit pointern arbeite jedoch nur 1, weil ich sie überschreibe?
Habe schon gespannt auf die Episode über Pointer gewartet.
Ich fand es super erklärt und bin auf deine Anwendungsbeispiele gespannt, weil ich mich bis heute nicht so wirklich mit den Pointern anfreunden kann.
Wollte mich nur mal für die tollen Videos bedanken. Mach weiter so.
hiho, auch wenn ich (von der Performance abgesehen, noch keinen Anwendungsfall habe stellt sich mir folgende Frage.
Wie sieht es aus wenn die Zahl größer als die 8bit ist? Immerhin würde sie dann ja eine weitere Speicherzelle benötigen, der Pointer aber zeigt auf die ....fda8 (in deinem Beispiel).
zZSkarbogZz Gute Frage! Die Antwort ist, dass du mit int* angibtst einen Pointer auf int zu machen! Genauso geht auch float*, dann machst du einen Pointer auf float. Daher weiß der Compiler, dass du beim bearbeiten des inhaltes des int* auch die nächsten 3 bytes (oder wie groß int auch immer ist) mitbearbeiten möchtest.MfG
***** Alles klar, also muss man sich dann darum nicht kümmern.Besten Dank für die flotte Anwort :)Btw. bisher eine sehr gut strukturierte und vorgetragene Reihe!
Es gibt Pointer für alle primitiven Datentypen. Ein Pointer, egal für welchen Datentyp belegt bei 32bit-Anwendungen 4 Byte, bei 64bit-Anwendungen 8 Bytes. Ein Pointer des Typs char* liest/schreibt allerdings einen char-Wert. Ein Pointer eines long long* einen long long-Wert (der also hier im Beispiel die Speicherzellen von ...fda8 bis ...fdaf betrifft). Man kann durch Casting aber auch z.B. nur ein Byte eines ints laden. Das ist z.B. nützlich, will man Werte in umgekehrte Byte-Reihenfolge laden oder schreiben (char val = *(char*)64bit_ptr; lädt das kleinste Byte eines long long)
Nicht sicher ob du das hier liest aber 1:20 bei int Zahl und in dem Speicher wird 100 0 0 0 eingetragen. Ich dachte es wäre in hex gespeichert? Wie würde es aussehen wenn man zb den Max wert für zahl eingegeben hätte (2 Mrd). Wie würde der 4 byte block dann aussehen? Bin nur bisschen verwundert wieso 100 0 0 0
Ich habe noch eine Kleine Frage:
Wenn man einen Pointer erstellt wird dabei eine eigene Variable erstellt.
In dieser Variable speichert man die Speicheradresse (&) der anderen Variable ab.
In der Speicheradresse steht ein x (0x7ffc4f33300) Integer können doch nur Zahlen speichern, wie ist das möglich?
int Zahl = 100;
int* Pointer1 = &Zahl;
std::cout
0x bedeutet so viel wie: das was danach kommt ist in Hexadezimalem Zahlensystem. (ist ein anderes Zahlensystem sowie z.B. Binär ist ja 01010101)
Aber eine gewisse Ähnlichkeit zu Referenzen gibt es doch schon, denn wenn man doch das & vor die Variable beim Funktionsaufruf schreibt, dann wird ja nicht der Wert sondern die Adresse übergeben, oder? Da dann ja in der Funktion der Wert an der Adresse der Variable verändert wird und somit auch der Wert der Variable, oder?
Dominik Ernst Man kann das gleiche Verhalten sowohl mit Pointern als auch Referenzen erreichen, das stimmt. Der unterschied liegt in der Betrachtung was passiert. Beim einen wird die Speicheradresse übergeben, beim andern die Variable selbst. Unter der Haube wird natürlich trozdem in beiden Fällen die Speicheradresse übergeben, aber der Programmierer bekommt im einen Fall eben nichts davon mit.
MfG
Ah okay, danke für die Antwort
mal ne frage sind eigendlich die Speicheradressen all vordefionniert das würde ja bedeuten das die ja auch noch gespeichert werden müssen un das ist echt viel platz.Oder werden die Speicheradressen immer je nach Programm vom Prozessor manuel zugewiesen. Würde mich über eine antwort freuen.
Jeder Prozess erhält gewisse Speicherbereiche (Memory Regions). Diese werden beim Start eines Programms festgelegt (Größe, Zugriffsrechte, Start, Ende). Im Stack befinden sich automatisch generierte Pointer, damit der Kernel weiß, wo er hinspringen muss, um das Programm auszuführen
Minute 5:40.. ich wollt grad fragen.. "Mensch, was bringt das denn bitte?"
Aber gut, bin ich mal gespannt ^^
Dafür andere Fragen:
1. warum sind pointer wieder datentyp abhängig? Nur zur Sicherheit, und halt damits type safe ist?
2. Kann ich einen Pointer auf eine x beliebige speicheradresse machen? Also kann ich einfach irgendeinen stuff meines arbeitsspeichers manipulieren, und damit eventuell das betriebssytem zum absturz bringen oder sonst was? Oder gibts da irgendwie nen scope oder so, sodass ich nur auf den bereich zu greifen kann in dem quasi mein programm läuft?
3. Frage 2 nochmal, aber das gleiche mit arrays - geht das? zB die stelle des zugriffs so ändern, das ich "aus meinem programm raus bin" ?
4. Was passiert eigentlich, (ja ich kanns auch ausprobieren.. mach ich wohl gleich mal.. aber trotzdem..) wenn man variablen "überlaufen" lässt? zB in ints zu große werte speichert (durch zB inkrementierung) ? Bei java springt die zahl ja einfach ins negative über..
1.) ja zur Sicherheit , wobei es da so etwas wie void pointer in c gibt , die dann Typ unabhängig sind wird zum Beispiel in der c Funktion malloc verwendet so weit ich weiß ...
2.) es gibt eine Begrenzung , und zwar laufen quasi alle Programme im Computer unabhängig von einander (virtual mode der CPU ) . dabei bekommt jedes Programm quasi seinen eigenen Arbeitsspeicher und hat auch nur rechte darin ... Ist jetzt noch nicht so genau erklärt von mir aber vll hilfts schon weiter ...
3.) ja auch bei arrays muss man da aufpassen (wurde schon im Video zu c arrays gesagt) aber intern macht der []operator bei den c arrays nix anderes als den pointer um die größe des Datentyps zu erhöhen und wenn das halt nicht mehr in dem array drin ist Pech ... Als würdest du den pointer irgendwohin in den RAM (deines Programms ) zeigen lassen ... Führt dann meistens früher oder später zum Absturz ...
4.) ja integer aller größen kannst du überlaufen lassen sollte gleich sein wie in Java ...
Maksim Rotmann Grundsätzlich stimmt alles was Jan Krae gesagt hat. Außer 4.:In C++ ist der überlauf von Variablen im Standard nicht definiert! Das heißt C++ legt hier kein Verhalten fest, es könnte theoretisch also alles passieren. Die meisten Compiler handeln das dann aber ähnlich wie Java. Dennoch sollte man aufpassen, um Plattformunabhängig zu bleiben, niemals in so einen Fall zu laufen.In solchen Sachen unterscheidet sich C++ und Java einfach deutlich. In Java kann man etwas einfach testen und weiß danach die Antwort, wie es in Java nun ist. In C++ hast du nur die Antwort was dein Compiler in dieser Situtation mit den gegebenen Einstellungen macht. Ob das nun definiertes Verhalten ist kannst du nur rausfinden, indem du im Standard nachliest (oder danach googlest).Void Pointer bekommen übrigens noch ihre eigene Episode (36).
***** da mus ich wiedersprechen, es ist schon definiert, nur halt nicht im c++ da es bereits im zweierkomplement definiert ist, also so wieder computer zahlen speichert.
das ganze kann man sich wie ein kariertes blat papier vostellen. wenn ich 4 karos zur verfuegung habe kann ich dort werte von +999 bis -999 drinne speichern. da der computer nur 0 und einsen kennt waeren das bei 4 karros +111 bis -111 und da das vorzeichen auch als 0 und 1 dargestellt werden muss haben alle positiven zahlen eine fuehrende 0 und negative zahlen eine fuehrende 1.
wir haben jetzt also volgende binaere zahlen:
0000 -> +0
1111 -> -1 (unsigned 15)
1110 -> -2 (unsigned 14)
1101 -> -3 (unsigned 13)
1100 -> -4 (unsigned 12)
1011 -> -5 (unsigned 11)
1010 -> -6 (unsigned 10)
1001 -> -7 (unsigned 9)
1000 -> -8 (unsigned 8)
0111 -> +7
0110 -> +6
0101 -> +5
0100 -> +4
0011 -> +3
0010 -> +2
0001 -> +1
0000 -> +0
wie einem jetzt vieleicht auffaelt haben wir ansich erst einen ueberlauf von -1 zur +0.
das verhalten ist hier genau so wie der cast von float auf int, nachkommerstellen werden abgeschnitten, so wie alles was nicht in die 4 bit heneinpasst verfaellt.
warum grade zweierkomplement, computer koennen nicht subtrahieren nur addieren, wenn etwas subtrahiert wird wird das zweierkomplement addiert, also bei 5-2 macht der computer dadraus 5+(-2) oder in binaerer form bei 4 bit 0101+1110 = 0011
und bei unsigned wird der computer angewiesen das vorzeichenbit nicht mehr als vorzeichen zu betrachten so das es nur noch positive zahlen gibt dafuer aber doppelt so viel positive zahlen.
wir haben bei c++ also sehrwohl einen sehr genaue definition was bei einem speicherueberlauf passiert, dies passiert aber nicht auf compiler ebene sondern auf maschienenebene weshalt es nicht in der c++ definition definiert werden muss.
warum es bei java definiert ist kann ich nur vermuten, da ich bei java nicht so viel erfahrung habe. bei java laeufen die programme ja in der javaeigenen vm und nicht direckt auf der maschiene, so dass das verhalten in der vm nicht vorhersehbar ist und deswegen im compiler definiert werden muss.
hoffe das is so einigermassen verstaendlich erklaert
mattze90th Der Prozessor muss aber nicht das zweierkomplement benutzen! Das ist zwar heute Standard und benutzten wirklich 99% aller Prozessoren aber es gibt immer noch randgebiete in denen das einerkomplement oder "sign and magnitude" verwendet werden. Daher kann der Standard dazu nichts sicher sachen, ergo ist es nicht definiert.
Zwar kannst du davon ausgehen, dass das zweierkomplement benutzt wird und in den meisten Fällen hast du damit auch absolut recht. Aber irgendwann knallt es dann halt. Mir ist auch klar, dass deine Version an den meisten Schulen/Hochschulen/Unis gelehrt wird. Der Standard hat hier aber nunmal recht, siehe Paragraph 4 und 5.
Kann man Pointer von Pointern machen?
Du nimmst ja int* warum nicht IntPtr ? (ist ja wenn ich micht nicht irre dafür, um pointer zu speichern) ?!
***** Keine Ahnung was IntPtr sein soll, aber vom Standard ist das nicht. Das wird irgendwas spezielles von irgendeinem Compiler sein.
***** msdn.microsoft.com/de-de/library/system.intptr(v=vs.110).aspx
***** Vorsicht, das ist das .net framework! Das ist nicht teil von c++.
Danke, danke und nochmals: danke.
Sehr sehr starkes Video !
Um... Why c++ address start from 0x004...?
Java hat keinen Pointer, wie soll man dann unter NullPointerException verstehen?
Weil die Javeentwickler an dieser Stelle innerhalb ihrer eigenen Terminologie inkonsistent waren.
Kleiner Tipp using namespace sdt erspart dir dieses ganz3 std :: cout .. usw
Siehe mein Video "C++ Bonus [001] - Wieso nicht "using namespace std" nutzen"
und was passiert wenn du nur pointer =15 hin schreibst?
Lustig wie du zuerst von 8 GB RAM und dann von 32 bit redest ;-) Nichtsdestotrotz sehr gut erklärt!
PMakerYT Das eine schließt das andere ja nicht zwangsläufig aus. Nur ein 32 PROGRAMM kann eben nicht alle 8 gb des SYSTEMS nutzen.
***** naja, da das betriebssystem (wenigstens windows) in 32 bit eben auch keine 8 gigabyte benutzen kann... schließt sich das letzten endes doch aus ;)
Maksim Rotmann deswegen habe ich System groß geschrieben ;)
Kann man statt
int zahl = 100;
int* pointer = &zahl;
*pointer = 15;
auch
int zahl = 100;
*&zahl = 15;
schreiben?
Man könnte natürlich einfach
zahl = 15;
schreiben aber mir geht es ums Prinzip ;)
KarabinLP Ich GLAUBE das müsste gehen. Habs aber noch nie probiert, weil man das in der Praxis natürlich nicht braucht, eben so wenig hab ich im Standard nachgelesen ;)
Danke mann! Richtig gut!
wobei der RAM ja auch matrizenartig angeordnet ist, also kein 8 Mio.-Turm wäre ;)
aber egal, nur so am Rande xD
Ich weiß nicht was du damit meinst. Doch er ist, aus logischer Sicht, ein 8 Millionen Turm in diesem Fall. Meinst du vielleicht die Memorypages des Betriebssystems?
soweit ich weiß, ist RAM matrizenartig angeordnet, also mit Zeile und Spalte, also ist es ja ne Tabelle und keine eindimensionale Ansammlung von Werten
Nein ist er nicht.
www.elektronik-kompendium.de/sites/com/0701281.htm
echt gelungene Erklärung
Ehrenmann
Erstmal:
Nein das bin nicht ich auf meinem Profilbild (einfach weil man ja öfters als Kiddie dargestellt wird oder so), sondern ein Google-Bilder Bild.
Nun zu meiner Frage:
Ist es also so, dass wenn ich
int bla = 100;
int bla = 200;
schreibe, 2 verschiedene Speicherzellen benötigt werden?
Wenn ich mit pointern arbeite jedoch nur 1, weil ich sie überschreibe?
Kiddie