Pointer

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
RoterZwerg
Beiträge: 2
Registriert: Mi Aug 31, 2011 4:50 pm

Pointer

Beitrag von RoterZwerg » Mi Aug 31, 2011 4:54 pm

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!

nullidee
Beiträge: 25
Registriert: So Aug 07, 2011 2:53 pm

Re: Pointer

Beitrag von nullidee » Mi Aug 31, 2011 5:02 pm

Auf den ersten Blick würde ich sagen das dir ein "return 0" vor der schließenden Klammer fehlt.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer

Beitrag von Xin » Mi Aug 31, 2011 5:05 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

RoterZwerg
Beiträge: 2
Registriert: Mi Aug 31, 2011 4:50 pm

Re: Pointer

Beitrag von RoterZwerg » Mi Aug 31, 2011 5:18 pm

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 :)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer

Beitrag von Xin » Mi Aug 31, 2011 6:27 pm

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. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Pointer

Beitrag von oenone » Do Sep 01, 2011 3:09 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Pointer

Beitrag von Xin » Do Sep 01, 2011 3:19 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Pointer

Beitrag von oenone » Do Sep 01, 2011 3:38 pm

Stell mich schon noch vor... die Antwort lag mir aber brennend auf der Zunge :P

Antworten