Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » 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
08.10.2003, 16:01 Uhr
geissbock



hi!

brache mal eine "kleine" nachhilfe in sachen zeigern!
char *ptr als defi

was passiert bei:
*ptr=1
*ptr='1'
ptr=1
ptr='1'

mfg geissbock
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.10.2003, 16:12 Uhr
Pablo
Supertux
(Operator)


Wenn du char* ptr und so intilisiert hast (char* ptr = "Hieristirgendetwas"; )
dann bekommst du einen Laufzeitfehler bei

C++:
*ptr=1



Wenn Aber char ptr[] = "Hieristirgendetwas"; initialisiert ist, kannst du es tun, weil man auf die Felder des Arrays zugreifen kann. Das geht auch, wenn du mit malloc gearbeitet hast.

*ptr=1 heißt: Weise den Wert 1 dem Element, auf das ptr zeigt. Zum Beispiel:

C++:
char ptr[] = "Hallo";
*ptr = 49;
printf("%s", ptr);


Ausgabe: 1allo

*ptr='1' ist dasselbe, aber wird den Wert '1' == 49 zugewisen, also

C++:
char ptr[] = "Hallo";
*ptr = '1';
printf("%s", ptr);


gibt dasselbe aus: 1allo.

ptr=1 heißt, dass die neue Adresse, auf die ptr zeigen soll, 1 ist.
ptr='1' heißt, dass die neue Adresse, auf die ptr zeigen soll, '1'==49 sein soll. Ich hab das nicht getestet, aber ich vermute eine Segmentation Fault Meldung beim Ausführen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 08.10.2003 um 16:13 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.10.2003, 16:25 Uhr
geissbock



ok danke schon mal. das ist klar.

wenn ich aber ptr nur definiere und nicht mit einem wert initialisiere:
char *ptr
dann
ptr=NULL =>d.h. die adresse auf die ptr zeigt ist 0??? oder?
danach
*ptr='1' =>bei einem printf von ptr wäre die ausgabe 1?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.10.2003, 16:32 Uhr
Pablo
Supertux
(Operator)


ptr=NULL ist äquivalent zu ptr=0;

Ich vermute, dass irgendwo in stdio.h oder so eine zeile #define NULL 0 steht.

Ich glaube nicht, dass


C++:
char* ptr=NULL;
*ptr = 1;



funktioniert ohne Segmentation Fault Meldung. Aber wenn schon, dann hängt von deiner Shell ab, wie sie den ASCII Code 1 anzeigt. Die ersten 12 ASCII Codes (glaube ich) haben keine Darstellung.


Bearbeitung:
Bei mir wird gar nicht angezeigt, als wäre es nicht da.


Bearbeitung:
Aber mach

C++:
char ptr[] = "Hallo";
*ptr=7;
printf("%s", ptr);


Ausgabe: Pipton + allo

--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 08.10.2003 um 16:38 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.10.2003, 16:39 Uhr
geissbock



na gut es ist keine '1'. es ist ein '/0'. aber das ist ja auch egal.

der ganze zusammenhang an dem ich im moment hänge ist im thread 'while-schleife' noch mal nachzulesen. dachte nur ich komme ein bischen schneller hinter die zeiger wenn ich noch einen speziellen thread eröffne. weil ich mache jetzt schon 1 jahr c programmierung und die zeiger sind immer noch ein buch mit sieben siegeln. ich hoffe das ich mit euer hilfe mal raffe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.10.2003, 16:54 Uhr
Pablo
Supertux
(Operator)


Ich versuche ja zu verstehen, aber ich finde nicht so ganz, wozu er nur am Anfang mit '\0' setzt und gleich danach '/'. ich verstehe nicht wieso.

Vielleicht kommt noch jemand auch noch dazu, du musst nur warten.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 08.10.2003 um 16:55 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.10.2003, 17:03 Uhr
geissbock



wenn ich mein problem mit den zeigern mal außen vor lasse ist das genau der punkt den ich auch nicht verstehe. meiner meinung nach ist das total sinnlos. aber der das programmiert hat wird sich schon dabei was gedacht haben. hoffe ich jedenfalls.

dann werd ich mal warten. aber danke für deine hilfe. hat mich wieder um einiges weiter gebracht. thx
 
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: