Для нуба объясните, чтоб не было константой не нужно строки использовать, а вместо них массивы надо?
если итоги подвести, то: char *a = "string" создаёт строковый литерал. который в большинстве компиляторов помещается в памяти только для чтения. и изменить саму строку по этому адресу нельзя(а адрес указателя можно). пишут, что в некоторых компиляторах можно указать опцию не помещать в ro память. char a[] = "string" создаёт обычный массив данных с которым допустимо всё, что можно делать с массивом
Слушай, да не было никогда такого, чтобы в БОЛЬШИНСТВЕ компиляторов это была строка только для чтения! Я в первый раз подобное слышу. Только в контексте МК и Гарвардской архитектуры, только в контексте специальных, не стандартных опций компилятора, такое возможно и только для того, чтобы экономить RAM, не копируя туда из ROM вообще все строки сразу до main().
для меня большинство это gcc/g++, msvc, sdcc и там вроде так. а в каких не так?
Это твои проблемы, "что никогда такого не было и вот опять". Ты либо пишешь по стандарту, либо нет.
Обсуждают сегодня