Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Const und Zeiger

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.07.2003, 17:35 Uhr
~chris
Gast


Ich hätte ein Problem. Verstehe folgende Anweisung nicht richtig:

const int i = 3;
const int* ip = &i; //Zeiger auf const int


const int i = 3;
const int* ip = &i; // Zeiger auf const int

*ip = 4; // Fehler: i ist konstant
ip = 0; // Ok: ip ist nicht konstant


int i = 3;
int* const ip = &i; // const-Zeiger auf int

*ip = 4; // Ok: i ist nicht konstant
ip = 0; // Fehler: ip ist nicht konstant


Danke schon im voraus.

gruss chris
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.07.2003, 20:03 Uhr
virtual
Sexiest Bit alive
(Operator)


korrekt
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.07.2003, 21:44 Uhr
Pablo
Supertux
(Operator)


Wenn du const int i = 3; hast, heißt es, dass du eine Variable von Typ int deklarierst, die Konstant sein soll, d.h, du kannst sie nicht mehr verändern während der Laufzeit. i = 8; lässt sich nicht kompilieren.

Ein Zeiger ist eine Variable, die eine Adresse vom SRAM speichert, nämlich die Adresse der Variable, auf die der Zeiger zeigt. Im ersten Fall ist sagt *, dass ip ein Zeiger sein soll, const, damit es ein konstanter Zeiger auf eine Konstante ist und &i sagt, dass ip die Adresse vom SRAM der Varivale i zurückgeben muss.


Code:
const int i = 3;
const int* ip = &i;  //Zeiger auf const int

*ip = 4; // Fehler: i ist konstant
ip = 0;  // Ok: ip ist nicht konstant



Wenn du nur ip schreibst, dann heißt es, dass sie Adresse geändert werden muss. Mit *ip heißt es, dass man auf die Variable zugreifen will, auf die ip zeigt. Deshlab ist die erste Zeile nicht zulässig, denn i ist konstant. ip=0 sagt, dass die Adresse, auf die ip zeigen muss, 0 ist, d.h. dass ip auf keine andere Variable zeigt und das ist zulässig, da ip selbst keine Konstante ist.


Code:
int i = 3;
int* const ip = &i; // const-Zeiger auf int

*ip = 4; // Ok: i ist nicht konstant
ip = 0; // Fehler: ip ist nicht konstant


i ist keine Konstante mehr, deshalb kannst du über den Zeiger ip die Variable i ändern. Aber du kannst nicht die Adresse ändern, auf die ip zeigt, weil ip als Variable konstant ist.

Ich hoff, dir ist klar geworden.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 27.07.2003 um 21:46 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.07.2003, 23:22 Uhr
~chris
Gast


Vielen Dank
Werde es durchdenken.

gruss chris
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.07.2003, 09:26 Uhr
0xdeadbeef
Gott
(Operator)


Diff:

C++:
int i = 3;
int* const ip = &i; // const-Zeiger auf int

*ip = 4; // Ok: i ist nicht konstant
ip = 0; // Fehler: ip ist [-]nicht[/-] konstant


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 28.07.2003 um 09:27 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: