Pointer auf mehrdimensionales Array - gelöst
-
-
Anonymer Nörgler schrieb:
Das Niveau leidet spürbar.

Eine liberale Forenpolitik ist ersteinmal zu begrüßen. Aber sobald der Punkt erreicht ist, dass das Niveau durch Einzelpersonen leidet, sollte etwas unternommen werden.
Die Moderation versagt völlig, wenn notorische Trolle hier ihr Unwesen treiben. Das Forum verliert zunehmend seine Glaubwürdigkeit, man kann es nicht mehr empfehlen. Es ist keine glaubwürdige Ressource mehr.
Es gibt hier einige Perlen. Leute die wahnsinnig viel Ahnung haben, deren Beiträge jedesmal eine Quelle für neues Wissen und tiefere Einsichten sind. Aber das alles wird überschattet durch Trolle und völlig lernresistente Leute, die bestensfalls ermahnt werden und danach fröhlig weiter machen.
Für mich ist der Punkt erreicht, dass ich mich von diesem Board abwende, wenn sich an dem Umgang mit Trollen und, verzeihung, Idioten, nichts ändert.
Eröffnet vielleicht ein Subforum für totale Anfängerfragen. Dieser Vorschlag wurde immer wieder verworfen, aber es könnte helfen. Imho wurde dieser Vorschlag stets mit sehr schwachen Argumenten abgelehnt; wie etwas dass dann für jedes Subforum ein eigenes Anfängerforum notwendig wäre (ist es nicht), oder dass die Leute nicht wüssten, wo zu posten ist (dafür gibt es im Zweifel die Moderatoren). Jede Frage unter einem gewissen Nieveau (aus Sicht des Moderators), wird in das Anfängerforum verschoben. Damit wird das auch eine Sammelstelle für Trolle und Lernresistente. Ernsthaft interessierte Leser können sich aber, ohne ständig mit geistigem Abfall konfrontiert zu werden, den eigentlichen Subforen zuwenden.
Hier muss was passieren Leute
-
Ach, ich find silent_max und seine threads auch irgendwie lustig. Popkorn halt.
-
silent_max schrieb:
esperanto schrieb:
silent_max schrieb:
double Zahlen[Anzahl_1][Anzahl_2]; //Array mit 2 Dimensionen erzeugen double *pZahlen = {&Zahlen[Anzahl_1][Anzahl_2]};//Pointer auf den zweidimensionalen Array deklarieren und gleichzeitig initialisierenAber pZahl ist doch vom Typ
double*, also nur ein Zeiger auf double. Und womit genau initialisierst du pZahl? Was ist das für eine Adresse? Worauf bezieht sie sich?Was meinst Du jetzt mit pZahl?
Ich meinte natürlich pZahlen.
silent_max schrieb:
esperanto schrieb:
silent_max schrieb:
cout << "Diese Speicheradressen sind verwendet worden:\n";//selbsterklärend for(int i=0; i<Anzahl_1; i++)//siehe oben for(int j=0; j<Anzahl_2; j++)//siehe oben { cout << "Zahl[" << i << "][" << j << "]" << &pZahlen[i][j];// Ausgabe der Speicheradressen für die 25 eingegebenen Werten }&pZahlen[i][j] wird wie folgt implizit geklammert: &((pZahlen[i])[j])
Wenn ich das mache dann kommt bei mir die Meldung "Der Ausdruck muss den Typ
"pointer-to-object" aufweisen.Die Klammerung ändert auch nichts an der Falschheit deines Codes. Die Klammerung war dazu gedacht, dir klar zu machen, wie der Compiler den Ausdruck versteht. 9+8*7 kann man auch 9+(8*7) schreiben, ohne dass da etwas anderes bei rauskommt.
silent_max schrieb:
esperanto schrieb:
pZahlen ist ja ein Zeiger auf double
Was ist dann der Typ des Ausdrucks pZahlen[i]?
Was ist dann der Typ des Ausdrucks pZahlen[i][j]?
Und worauf bezieht sich die Adresse, wenn du noch den Adressoperator davor hängst?So wie ich Dich jetzt verstehe, muss ich drei Pointer deklarieren?
*pZahlen[i]
*pZahlen[j]
*pZahlen[i][j]Keine Ahnung, wie du darauf kommst. Meine Fragen hast du damit nicht beantwortet. Was Ausdrücke in C++ sind, solltest du wahrscheinlich mal nachlesen.
-
silent_max schrieb:
Ich wollte einen Pointer auf ein mehrdimensionales Array zeigen lassen.
Wer hindert dich daran? Mach doch einfach:
const int a=2, b=2; double zahlen[a][b] = {1,2,3,4}; double *p = (double*)zahlen; // Bzw. weniger schön p = reinterpret_cast<double*>(zahlen);Das kann man sogar benutzen:
for ( ; p < (double*)zahlen + a*b; p++ ) cout << *p << " "; for ( p -= a*b; p < reinterpret_cast<double*>(zahlen) + a*b; p++ ) // Bzw. weniger schön cout << *p << " ";
-
Was Ausdrücke in C++ sind, solltest du wahrscheinlich mal nachlesen.

N3337 §5 (1) schrieb:
An expression is a sequence of operators and operands that specifies a computation. An expression can result in a value and can cause side effects.
-
Sone schrieb:
An expression can result in a value.
Kann mir einer einen Ausdruck zeigen, der nicht in einem Wert resultiert?
-
out schrieb:
Sone schrieb:
An expression can result in a value.
Kann mir einer einen Ausdruck zeigen, der nicht in einem Wert resultiert?
(void)0Edit: Ein besseres Beispiel ist eine Funktionsaufruf einer Funktion, die nichts zurückgibt.
-
Sone schrieb:
out schrieb:
Sone schrieb:
An expression can result in a value.
Kann mir einer einen Ausdruck zeigen, der nicht in einem Wert resultiert?
(void)0Edit: Ein besseres Beispiel ist eine Funktionsaufruf einer Funktion, die nichts zurückgibt.
stimmt
-
Also ich habe mit meinem Lehrer nocheinmal darüber gesprochen, was ich vorgehabt habe.
Dieser sagt wie ihr, dass ein Pointer auf einen Array keinen Sinn hat, da man an die Adressen eins Array so oder so kommt und dass ein speziell initialisierter Pointer auf die Adressen nicht nur sinnlos sind sondern auch kein guter Programmierstil sind.
Ich muss mich bei euch echt entschuldigen dafür.
Gruß
Max