Was sie alle gesagt haben, müssen Sie den Platz für s1 zuweisen. Was für alle anderen arbeiten geschrieben hat ganz gut, aber wenn Sie einen einfacheren Weg wollen für einen vorhandenen String Speicherplatz zuweisen und sie in einen neuen Zeiger kopieren dann strdup wie folgt verwenden:
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;
int main() {
const char s2[] = "asdfasdf";
char* s1;
s1 = strdup(s2);
printf("%s", s1);
return 0;
}
Jemand erwähnte strdup früher, das wäre ein Weg, es zu benutzen. Die meisten Systeme sollten es unterstützen, da es in den Standard-C-Bibliotheken enthalten ist. Aber anscheinend tun einige nicht. Also, wenn es einen Fehler zurückgibt, schreibe entweder deinen eigenen mit der bereits erwähnten Methode, oder benutze einfach die bereits erwähnte Methode;)
Code-Kompilierung garantiert nicht wirklich ein stabiles Programm.Der Compiler wird * einige * für Sie überprüfen, aber es gibt keine Möglichkeit, alle möglichen unsicheren Programme zu eliminieren, zumindest nicht in C. Viele andere Sprachen sind viel schützender, aber die meisten von ihnen lassen Sie nicht auf beliebigen Speicher zugreifen Weg C tut es. – quark