( locsemege | 2023. 01. 02., h – 14:59 )

Ez ilyen vak vezet világtalan lesz, mert én is sokszor kipróbálom, amikor ezekre szükségem van.

Egyrészt nem mondtad, mi az a fordítási hiba. Írd le a hibaüzenetet! Másrészt nem mindegy, hogy a string egy read only területen, például flash memóriában tárolt karakter lánc, amelyre mutat egy RAM-ban tárolt, így felülírható pointer, vagy a pointer az, ami nem változtatható meg.

char* valtozo = FIX;

szerintem azért problémás, mert a pointereknek van típusuk, nem void * az összes. Tehát, ha egy olyan típusú pointernek adsz értéket, ami azt tudja magáról, hogy az általa címzett memóriatartalom írható, olvasható, s egy olyan címet kap értékül, amelyen lévő tartalom nem írható, akkor a fordító szorongani kezd, s attól tart, hogy a későbbiekben csinálsz valami ilyesmit:

*(valtozo + 2) = 'A';

Szerintem lehetőséged van erre:

const char *valtozo;

valtozo = FIX;
valtozo++;
printf("%c\n", *valtozo);

Vagy csinálhatod ezt:

char *valtozo;

valtozo = (char *) FIX;

Csak ez utóbbi esetben úttörő becsszóra ne próbálj *valtozo-nak értéket adni, mert abból tényleg segfault lesz.