В чем разница между этими двумя определениями?В чем разница между этими двумя определениями?
char *string = "MyString";
char string[] = "MyString";
Насколько я знаю, первый из них является указателем на строку.
В чем разница между этими двумя определениями?В чем разница между этими двумя определениями?
char *string = "MyString";
char string[] = "MyString";
Насколько я знаю, первый из них является указателем на строку.
Первый представляет собой указатель на строку буквальной, второй массив инициализирован с содержимым строки буквальной (, который КСТАТИ, когда оптимизированные точки точно где string
точек).
Первый живет в сегменте памяти только для чтения и поэтому не может быть изменен.
Второй представляет собой массив из 9 элементов, и вы можете изменить любой из 9 элементов, включая байт null
, который явно не задан в коде вашего вопроса.
C не имеет строкового типа. И ответ можно найти, изучив основы языка. – Olaf
Их тип и количество ограничений, которые создает компилятор для доступа к объекту. – Jens
см. Также http://stackoverflow.com/questions/30533439/string-literals-vs-array-of-char-when-initializing-a-pointer –