000
22.11.2007, 21:02 Uhr
RedEagle
|
Hi Ich studiere im ersten Semester ET. Da wird momentan in Informatik nur mir bekannte themen durchnehmen, wollte ich mal gucken, was denn so im 2. Semester kommt. So habe ich mir ein Übungsblatt für das 2. Semenster runtergeladen und angesehen.
Soweit "leider" auch kein Problem, aber eine Sache kommt mir sehr komisch vor:
Es ist folgende Funktion gegeben:
C++: |
void funktion() { char S[256]; /* (1) */scanf("%s", S); /* (2) */scanf("%s", &S); /* (3) */scanf("%s", &S[0]);
//... }
|
Es soll erklärt werden warum (1) bis (3) identisch ist. gut, dass (1) gleich (3) ist, ist offensichtlich, aber warum (2)??
Wieso ist S==&S ?? (ich habe es ausprobiert, und es stimmt) (gcc 4.1.0 unter Linux x86-64)
S enthält doch eigentlich nur die Adresse, an der das Array liegt... &S müsste doch eine andere adresse haben, &S = S-4
Code: |
Adresse Wert Kommentar 0x00000000 0x04000000 S S enthält die adresse des 256 Arrays 0x00000004 0x00 S[0] 0x00000005 0x00 S[1]
|
(&S == 0x00000000)
Wo liegt mein Denkfehler?? Oder liege ich richtig?? -- MFG RedEagle Dieser Post wurde am 22.11.2007 um 21:03 Uhr von RedEagle editiert. |