000
28.07.2007, 14:27 Uhr
cfx
|
Hallo, Man liest ja des Öfteren, dass ein String sowohl mit char *name als auch char name[] deklariert werden kann. (bzw. auch char name[Anz_Zeichen] )
Nun ja... , folgendes Beispielprogramm dazu:
C++: |
#include <stdio.h>
int main () { char tmp[] = "Test"; char *temp = "Test";
if (tmp[2] == 's') puts ("Stimmt so.");
if (temp[2] == 's') puts ("Stimmt so.");
puts("");
puts (tmp); tmp[2] = 'x'; puts (tmp);
puts("");
puts (temp); temp[2] = 'x'; puts (temp);
return 0; }
|
So, wenn ich das dann mit GCC 4.1.2 kompiliere und in einer Shell ausführe, erhalte ich folgendes Resultat:
Zitat: |
Stimmt so. Stimmt so.
Test Text
Test Speicherzugriffsfehler
|
Kann mir jetzt einer erklären, warum ich beim Vergleich mit einer If-Anweisung auf die einzelnen Stringelemente zugreifen kann, wenn ich diese aber ändere, funktioniert nur die Deklaration mit char tmp[] = "Test" ???
Sind doch beides Zeiger auf char. Also warum geht das nicht ?
Gruß cfx Dieser Post wurde am 28.07.2007 um 14:28 Uhr von cfx editiert. |