On Thu, 18 Jul 2002 at 14:41 (+0200), Daniel Bauer / MList wrote:
From: Volker Kroll
noch mal eine dumme Frage. Wenn ich einer Funktion einen Pointer übergebe, sollte diese doch den Inhalt des Pointers ändern können. Warum funktioniert dann diese Funktion nicht: #include
void tester(char*); int main (int argc, char* argv[]) { char *field = "teststring"; tester(field); printf("String: %s\n", field); /* prints teststring not langer String */ return 0; }
void tester(char* test) { test = "langer String"; }
IMHO funktioniert die Zuweisung so nicht ... probier mal:
void tester(char* test) { strcpy (test, "langer String"); }
So einfach nicht: 1. Du darfst einer Konstante keinen anderen Wert zuweisen. 2. Du darfst schon gar nicht einen längeren Wert zuweisen. Du hast doch nur 11 Bytes Speicher (10 Zeichen + \0). strcpy(test, "kurz"); dürfte zwar funktionieren, kollidiert aber mit 1. Kann aber sein, dass der GCC es mit 1. nicht sehr genau nicht. Mit dem bcc32 (Borland/Win) hatte ich diesbezüglich schonmal Probleme. *g* Gruß, Bernhard -- _________ http://www.bwalle.de _________________________________________________ Geld ist besser als Armut - wenn auch nur aus finanziellen Gründen. -- Woody Allen