Seite 1 von 1

Pointer

Verfasst: Mi Aug 31, 2011 4:54 pm
von RoterZwerg
Hi mal ne Frage ich komme einfach nicht weiter.

Ich habe folgende Code bekommen:

Code: Alles auswählen

#include <iostream.h>

void main (){

int int_value;
int *pnt_value;

pnt_value=&int_value;
int_value=3;

cout<<pnt_value<<"\n";
}
Dazu folgende Frage:
Warum liefert der folgenden Quellcode nicht den erwartetn Wert "3" in der Ausgabe? Wo ist der Fehler und was ist daran die Problematik?

Dazu muss ich sagen ich wollte diesen Code in CodeBlocks eingeben aber jedesmal kam folgende fehler!

error: '::main' must return 'int' kann mir einer sagen woran das liegt?


Kann mir einer bei dem lösen der Probleme helfen danke!

Re: Pointer

Verfasst: Mi Aug 31, 2011 5:02 pm
von nullidee
Auf den ersten Blick würde ich sagen das dir ein "return 0" vor der schließenden Klammer fehlt.

Re: Pointer

Verfasst: Mi Aug 31, 2011 5:05 pm
von Xin
RoterZwerg hat geschrieben:Hi mal ne Frage ich komme einfach nicht weiter.

Ich habe folgende Code bekommen:
Hallo Hausaufgabe? ^^
RoterZwerg hat geschrieben:

Code: Alles auswählen

#include <iostream.h>

void main (){

int int_value;
int *pnt_value;

pnt_value=&int_value;
int_value=3;

cout<<pnt_value<<"\n";
}
Dazu folgende Frage:
Warum liefert der folgenden Quellcode nicht den erwartetn Wert "3" in der Ausgabe? Wo ist der Fehler und was ist daran die Problematik?
pnt_value ist ein Pointer. Und der enthält die Adresse einer Int-Variablen. Und diese Adresse bekommst Du wohl ausgegeben. Mit &int_value "referenzierst" Du die Variable. Du holst Dir die Adresse wo die Variable liegt.

Du musst jetzt also "dereferenzieren", also dahin gucken, wohin der Zeiger zeigt. Das machst Du mit "*" vor der Pointervariablen.

Code: Alles auswählen

cout<<*pnt_value<<"\n";
RoterZwerg hat geschrieben:error: '::main' must return 'int' kann mir einer sagen woran das liegt?
Der Standard verlangt, dass Du einen Integerwert zurückgibst. Dabei bedeutet der Wert 0, dass alles okay ist.

Code: Alles auswählen

...
   cout << *pnt_value << "\n";

   return 0;
}
siehe auch: http://www.proggen.org/doku.php?id=c:tutorial:pointer

Willkommen im Forum.

Re: Pointer

Verfasst: Mi Aug 31, 2011 5:18 pm
von RoterZwerg
Hi danke für die Tipps und die Hilfe!

und @ Xin nein sind aufgaben für eine Klausur aber irgendwie bin ich nicht mehr so fit in informatik wie ich dachte....naja und jetzt muss ich aber die KLausur schreiben und versuche mich da wieder rein zudenken :)

Naja das kann was werden :)

Re: Pointer

Verfasst: Mi Aug 31, 2011 6:27 pm
von Xin
RoterZwerg hat geschrieben:Hi danke für die Tipps und die Hilfe!
Dafür ist das Forum da. :-)
RoterZwerg hat geschrieben:und @ Xin nein sind aufgaben für eine Klausur aber irgendwie bin ich nicht mehr so fit in informatik wie ich dachte....naja und jetzt muss ich aber die KLausur schreiben und versuche mich da wieder rein zudenken :)
Solange Du Dinge verstehen willst, ist mir egal, woher die Aufgaben kommen. Das wurde an der Frage "Was ist daran die Problematik" klar.
Wir hatten aber auch schon Leute hier, die einfach mal 10 Aufgaben posteten und dann die Lösung erwarteten. Das funktioniert so natürlich nicht. ^^
RoterZwerg hat geschrieben:Naja das kann was werden :)
Viel Erfolg. :-)

Re: Pointer

Verfasst: Do Sep 01, 2011 3:09 pm
von oenone
Hallo RoterZwerg,
RoterZwerg hat geschrieben:

Code: Alles auswählen

#include <iostream.h>
<iostream.h> gehört nicht zum Standard, du solltest lieber <iostream> benutzen und dann "std::cout" oder "using namespace std;" (letzteres nicht empfohlen).
RoterZwerg hat geschrieben:

Code: Alles auswählen

void main (){
error: '::main' must return 'int' kann mir einer sagen woran das liegt?
void main ist auch weder C, noch C++. Der Typ von main muss "int" sein.
RoterZwerg hat geschrieben:

Code: Alles auswählen

cout<<pnt_value<<"\n";
Statt "\n" solltest du lieber std::endl benutzen.
RoterZwerg hat geschrieben:Dazu folgende Frage:
Warum liefert der folgenden Quellcode nicht den erwartetn Wert "3" in der Ausgabe? Wo ist der Fehler und was ist daran die Problematik?
pnt_value ist ein pointer. Wenn du ihn ausgibst, gibt er seinen Wert, also die Speicheradresse aus, auf die er zeigt.

Re: Pointer

Verfasst: Do Sep 01, 2011 3:19 pm
von Xin
oenone hat geschrieben:
RoterZwerg hat geschrieben:

Code: Alles auswählen

void main (){
error: '::main' must return 'int' kann mir einer sagen woran das liegt?
void main ist auch weder C, noch C++. Der Typ von main muss "int" sein.
Narf, das mit dem void main(void) war mal Standard - nur halt eben nicht C-Standard. Das lese ich bis heute nicht als Fehler. ^^

Nochmal willkommen bei proggen.org. :-)
Bei Leuten, die nicht gleich wieder verschwinden wollen, freuen wir uns über eine Uservorstellung, es besteht aber kein Zwang.

Re: Pointer

Verfasst: Do Sep 01, 2011 3:38 pm
von oenone
Stell mich schon noch vor... die Antwort lag mir aber brennend auf der Zunge :P