Мне интересно, какая разница между char s[] = "hello" и char *s = "hello".
После прочтения этого и this, я все еще не очень понятен по этому вопросу.
Как я знаю, в памяти есть пять сегментов данных: текст, BSS, данные, стек и куча.
С моей точки зрения,
в случае char s[] = "hello":
-
"hello"находится в тексте. -
sнаходится в Data, если это глобальная переменная или Stack, если это локальная переменная. -
У нас также есть копия
"hello", где хранитсяs, поэтому мы можем изменить значение этой строки с помощьюs.
в случае char *s = "hello":
-
"hello"находится в тексте. -
sнаходится в Data, если это глобальная переменная или Stack, если это локальная переменная. -
sпросто указывает на"hello"в тексте, и у нас нет его копии, поэтому изменение значения строки с помощью этого указателя должно привести к ошибке "Сегментационная ошибка".
Я прав?