Zeiger Verständnis Problem
-
@dot das stimmt zwar erklärt aber nicht warum er abstürzt das unten geht ja auch
irgend wie kommt es mir so vor als würde mit der for schleife zwar *zeichen[6] nicht benutzt jedoch irgend wie im verborgenen Nirwana dennoch verwendet mysteriös
#include <stdio.h> #include <stdlib.h> int main() { char *zeichen[5]={NULL,NULL,NULL,NULL,NULL}; zeichen[0]="1"; zeichen[1]="22"; zeichen[2]="333"; zeichen[3]="4444"; zeichen[4]="55555"; zeichen[5]="666666"; printf("[%s]\n", zeichen[0]); printf("[%s]\n", zeichen[1]); printf("[%s]\n", zeichen[2]); printf("[%s]\n", zeichen[3]); printf("[%s]\n", zeichen[4]); printf("[%s]\n", zeichen[5]); return 0; }
-
char* zeichen[5]
Da deklarierst du dass zeichen 5 Elemente hat.
zeichen[5]="666666";
Da schreibst du in das 6te Element von zeichen das nicht existiert.
-
Definiere doch mal mehr Variablen und gib die aus:
char *h = "Hallo"; char *zeichen[5]={NULL,NULL,NULL,NULL,NULL}; char *w = "Welt!"; // der Rest von dir ... printf("%s %s\n", h, w); return 0;
-
ok danke jetzt hab ich es auch gerafft
-
dot schrieb:
In der Deklaration gibt die Zahl die Anzahl der Elemente an und nicht den Index des letzten Elements. Wenn du von 0 bis 5 laufst dann macht das 6 Elemente
Es handelt sich um eine Definition und nur damit nur implizit um eine Deklaration.
-
Modus1984 schrieb:
char *zeichen[5]={NULL,NULL,NULL,NULL,NULL};
ist äquivalent zu
char *zeichen[5]={NULL};
ist äquivalent zu
char *zeichen[5]={0};
ist äquivalent zu
char *zeichen[]={NULL,NULL,NULL,NULL,NULL};
-
Wutz schrieb:
Es handelt sich um eine Definition und nur damit nur implizit um eine Deklaration.
Es handelt sich um eine Deklaration die auch eine Definition ist. Was genau ist also an meiner Aussage falsch!?
-
dot schrieb:
Wutz schrieb:
Es handelt sich um eine Definition und nur damit nur implizit um eine Deklaration.
Es handelt sich um eine Deklaration die auch eine Definition ist. Was genau ist also an meiner Aussage falsch!?
Viel verstanden hast du an den beiden Worten nicht.
Eine Deklaration ist keine Definition. Eine Definition ist immer auch eine (implizite) Deklaration.
-
@Wutz
Das stammt nicht von mir. Das habe ich übenommen, damit Modus1984 die Stelle findet wo das drumherum hingehört.
Zudem ist es auch nicht falsch.
-
Wutz schrieb:
dot schrieb:
Wutz schrieb:
Es handelt sich um eine Definition und nur damit nur implizit um eine Deklaration.
Es handelt sich um eine Deklaration die auch eine Definition ist. Was genau ist also an meiner Aussage falsch!?
Viel verstanden hast du an den beiden Worten nicht.
Eine Deklaration ist keine Definition. Eine Definition ist immer auch eine (implizite) Deklaration.Ähm, ja eben!? Jede Definition ist eine Deklaration (soll ich hier jetzt wirklich anfangen den Standard zu zitieren!?). Also ist diese Definition da (wie jede Definition) auch eine Deklaration. Und für sein Problem zählt nur der deklarierte Typ von
zeichen
!? Ich versteh echt nicht wo dein Problem liegt oder wie du drauf kommst dass das hier überhaupt irgendwie relevant ist, Fakt ist ich habe nichts Falsches gesagt