Benötige Hilfe bei einem Beispiel für das Verständnis von Pointern
-
Vielen Dank, das hat mir sehr geholfen. Jetzt sind alle mein Fragen beantwortet zu Pointern. DANKE
-
sry
Wichtig: tauschen(*zahlen,*(zahlen+1));
Quatsch!
tauschen (zahlen,zahlen+1); // wäre richtig, da Arrays eigendlich Zeiger sind.
es gilt:
zahlen[1] == *(zahlen+1)
-
Nun habe ich folgenden Fehler in der 10. Zeile:
error C2664: 'tauschen' : Konvertierung des Parameters 1 von 'int [2]' in 'int' nicht moeglich
Also jetzt hab ich den Quellcode so:int main(int argc, char* argv[]) { int zahlen[2] = {1,2}; int *pointer; void tauschen(int, int); //Initialisierung pointer = zahlen; tauschen (zahlen,zahlen+1); return 0; } void tauschen(int *i,int *j) { int tauscher; tauscher= *i; // *i :dereferenzierung *i=*j; *j=*i; }Bin bei Hilfe natürlich sehr dankbar
-
Hallo,
der Fehler ist in Zeile 10.
Butzi
Euer
LordBritish
IT-Titan, Blondinenflachleger und Audi A3-Fahrer (220PS!)
-
Ja, das stimmt ich hab ja geschrieben
Nun habe ich folgenden Fehler in der 10. Zeile:
error C2664: 'tauschen' : Konvertierung des Parameters 1 von 'int [2]' in 'int' nicht moeglichAber meine Frage ist eher, wie muss das richtig aussehen, da ich gerad erst mit Pointer anfange und noch nicht soviel Ahnung hab.
Danke
-
Du könntest
tauschen( &zahlen[0], &zahlen[1] );probieren
Und im Magazin gibt's auch einen guten Artikel zu Zeigern.
-
Damit ist der alte Fehler weg, aber denn kommt folgender Fehler:
error C2664: 'tauschen' : Konvertierung des Parameters 1 von 'int *' in 'int' nicht moeglich
-
Also:
(1).qwertzuiopü+ schrieb:
sry
Wichtig: tauschen(*zahlen,*(zahlen+1));
Quatsch!
tauschen (zahlen,zahlen+1); // wäre richtig, da Arrays eigendlich Zeiger sind.
es gilt:
zahlen[1] == *(zahlen+1)Arrays sind keine Zeiger.
(2).int main(int argc, char* argv[]) { /* --- */ void tauschen(int, int); /* --- */ }in der main hat die Funktionsdecleration nichts zu suchen!
void swap(int*, int*); int main() { int data[] = {1, 2}; swap(&data[0], &data[1]); // swap(data, data + 1); } void swap(int* first, int* second) { int temp = *first; *first = *second; *second = temp; }so ist es korrekt.
-
Ja das klappt. DANKE
Und wegen der Funktionsdekleratio: Unser Lehrer hat uns das so beigebracht und der wird sauer wenn wir das hinterher anders machen, also werd ich das weiterhin so machen (zumindest inner Schule, damit ich die gute Note beibehalte). Aber mich würd interessieren wieso sie da nichts zu suchen hat?
-
Hmm weil die Funktion sich im globalen "Scope" befindet. Dann hat deren Dekleration wenig im lokalen Scope der main zu suchen.