Was bedeutet "**"?
-
Also ein Zeiger auf einen Zeiger?
Ich versteh das immer noch nicht so richtig
-
Don Quijote schrieb:
Also ein Zeiger auf einen Zeiger?
Ich versteh das immer noch nicht so richtig
Genau, du hast einen Zeiger der auf eine Speicheradresse verweist welche selber eine Adresse (auf eine andere Speicheradresse) speichert.
Also einfach eine doppelte Indirektion.
-
Don Quijote schrieb:
Also ein Zeiger auf einen Zeiger?
Ich versteh das immer noch nicht so richtig
gegeben sei ein Typ T. Egal welcher. int, char, foo, string,...
Dann ist
T* p;ein Zeiger auf T.
Was aber wenn T nun sagen wir ein char* waere?
T* p;
wuerde dann zu
char** p;
werden.T* ist einfach nur ein Zeiger auf T. Und T kann jeder Typ sein. Auch selber wiederum ein Zeiger. Zeiger sind ganz normale typen, da ist keine Magie dabei.
Man kann also auch ein
T*************************************************************** p;
machen.
-
Shade Of Mine schrieb:
Don Quijote schrieb:
Also ein Zeiger auf einen Zeiger?
Ich versteh das immer noch nicht so richtig
gegeben sei ein Typ T. Egal welcher. int, char, foo, string,...
Dann ist
T* p;ein Zeiger auf T.
Was aber wenn T nun sagen wir ein char* waere?
T* p;
wuerde dann zu
char** p;
werden.T* ist einfach nur ein Zeiger auf T. Und T kann jeder Typ sein. Auch selber wiederum ein Zeiger. Zeiger sind ganz normale typen, da ist keine Magie dabei.
Man kann also auch ein
T*************************************************************** p;
machen.Das geht aber nicht unbegrenzt, ich glaube 7 Indirektionen werden durch den Standard mindestens gefordert.
-
Ok, klingt total logisch.
Vielen dank euch beiden für die schnelle und kompetente Hilfe

-
Tippgeber schrieb:
Das geht aber nicht unbegrenzt, ich glaube 7 Indirektionen werden durch den Standard mindestens gefordert.
Das ist natürlich eine Einschränkung, die einem das Leben besonders schwer machen kann... :p
Aber ist das tatsächlich so? Und bei
typedefs werden auch alle Indirektionen berücksichtigt?
-
7 Indirektionen werden durch den Standard mindestens gefordert.

Ich muss meinen Code umschreiben gehen...
-
Tja seht ihr, jetzt habt ihr Jahre eures Lebens verschwendet. Ich arbeite schon seit Jahren nur noch mit 7-dimensionalen Arrays (natürlich übernehme ich die Speicherverwaltung von Hand und copy 'n paste)

-
Aber du behauptest von dir, du programmierst in C++?

-
Tippgeber schrieb:
Tja seht ihr, jetzt habt ihr Jahre eures Lebens verschwendet. Ich arbeite schon seit Jahren nur noch mit 7-dimensionalen Arrays (natürlich übernehme ich die Speicherverwaltung von Hand und copy 'n paste)

das tolle an c++, ich habe eine array klasse:
array_n<int, 7> arr(make_array_n<7>(5,6,7,8,9,10,11));
und schon kann man
arr[0][1][2][3][4][5][6]=7;
machen
-
wollte mir auch mal sowas schreiben aber hab noch kein bock gehabt

mach ich mal bei gelegenheit
-
Skym0sh0 schrieb:
mach ich mal bei gelegenheit
Lohnt sich auf jeden Fall!
