Pointer behält Adresse aber Inhalt verschwindet
-
Hi,
Also ich habe folgendes Problem:
Ich definiere einen Pointer diesem ordne ich eine Adresse zu.
Danach Kommt Inhalt an diese Adresse.
Das funktioniert so weit auch einwandfrei...
Doch dann rufe ich die Funktion socket() auf...
Und nach dieser Funktion ist der Inhalt verschwunden...
Hier der Code (gekürtzt):int main(int argc, char *argv[]) { char cmds[512]; char *command = cmds; ... command = "Irgendwas"; ... sockfd = socket (AF_INET, SOCK_STREAM, 0); ... }
So und sobald nun die Funktion socket() aufgerufen wurde, ist der Inhalt von command wieder leer. Zuvor ist er noch vorhanden.
command zeigt allerdings noch immer auf die selbe Addresse.
Ich kann mir das überhaupt nicht erklären...
Vielen Dank schonmal.
-
Poste mal bitte ein vollständiges Minimalbeispiel, was den Fehler illustriert.
-
eins weiter unten stehts richtig!!!
mfg hohesC
-
#include <stdio.h> #include <conio.h> #include <string.h> int main(int argc, char *argv[]) { char cmds[512]={0}; char *command = &cmds[0]; strcpy(command,"Irgendwas"); //restlicher CODE ...... return(0); }
so muss dat sein!!!
-
char *command = &cmds[0];
sollte doch das gleiche sein wie
char *command = cmds;
weil cmds ja die Startadresse des Arrays ist.
mfg
harri
-
char *command = &cmds[0]; strcpy(command,"Irgendwas"); cout << &command[0] << endl; cout << command[0] << endl;
warum funktioniert &command[0] ?
cu
-
vcbuilder schrieb:
char *command = &cmds[0]; strcpy(command,"Irgendwas"); cout << &command[0] << endl; cout << command[0] << endl;
warum funktioniert &command[0] ?
cu
Warum sollte es nicht funktionieren?? Das ist übrigens C++ Code und hat nichts mit ANSI-C zu tun. Aber mit printf("%d", ...) funktionierts genauso :).
-
AJ schrieb:
Das ist übrigens C++ Code und hat nichts mit ANSI-C zu tun. Aber mit printf("%d", ...) funktionierts genauso :).
Bzzt. Pointer gibt man mit printf("%p", (void*)command) aus (der Cast ist hier wichtig!).
Ob command, oder &command[0] ist aber egal, ja.