Wir haben es mit einem konstanten Zeiger zu tun, , so dass die Adresse, die er enthält, nicht geändert werden kann. Aber der Inhalt dieser referenzierten Speicheradresse soll veränderbar sein ...So ändern Sie den Inhalt von char * const, nachdem er gesetzt wurde (C)
Immer noch bekomme ich Kompilierung/Segmentierung Fehler Fehler, wenn Sie dies versuchen.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char * const c_ptr = "firstValue"; // now c_ptr is a const ptr to an immutable string literal,
//we can't change it unless we declare char [] instead
printf("%s",c_ptr);
*c_ptr="hsdsdsd"; // better to use strcpy(c_ptr, "hsdsdsd");
printf("%s",c_ptr);
return 0;
}
main.c: In Funktion 'main':
main.c: 8: 8: Warnung: Zuordnung ohne eine ganze Zahl von Guss Zeiger macht [standardmäßig aktiviert]
* c_ptr =“ hsdsdsd ";Segmentation fault (core dumped)
Lesen Sie ein grundlegendes C-Buch, bitte. '* c_ptr'! =' c_ptr', um mit zu beginnen. –
Lesen Sie die Warnung. Es wirft Pointer-> Int-> Char. –
Warum sollte ich ändern, wohin es zeigt? es ist ein konstanter Zeiger ... –