1 | ||||||||||||||||
Чем отличается const char* от char*?01.06.2018, 12:51. Показов 13977. Ответов 5
Метки нет Все метки)
(
Доброго всем дня!
Из матчасти я понимаю, что char* - это указатель массив символов, тогда как const char* - это константный указатель на массив символов. Но вот чего не понимаю
У меня получилось запустить эту функцию в таком виде:
Код
char ar[2]; Код
char* a = "mur ";
0
|
|
01.06.2018, 12:51 | |
Ответы с готовыми решениями:
5
Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *" Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' |
зомбяк
1581 / 1215 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
|
||||||||||||||||
01.06.2018, 13:36 | 2 | |||||||||||||||
Нет. char* - указатель на символ. То есть для того, чтоб char* а стал указателем на первый символ из массива, нужно сделать так:
А строковые литералы наподобие "mur " - это константы, точно такие же как например числа. Ты же в своём коде не пытаешься присваивать
Касательно strcat -
По поводу всего этого можешь прочитать подробнее тут - https://www.cyberforum.ru/blogs/18334/blog97.html А вообще гораздо проще будет работать с std::string . Всё-таки вышеописанные строки и функция strcat - наследие С.
1
|
01.06.2018, 13:40 [ТС] | 3 | |||||
Вот этот момент, мне пожалуй, и не понятен
Короче, если мои мысли текут в верном направлении, то "mur " будет храниться как константа в секции .text, куда запись запрещена, поэтому и ошибка... Понял, спасибо
0
|
2330 / 796 / 302
Регистрация: 10.02.2018
Сообщений: 1,861
|
||||||
01.06.2018, 13:49 | 4 | |||||
Да, при компиляции под виндой так и получается. Фактически, тип указанный компилятору не соответствует содержимому. Протектор памяти не позволяет запись, хоть тип объявлен как char* . Для кода
1
|
![]() 2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
01.06.2018, 14:00 | 5 |
Это неверно. Да, char* - это указатель на неконстантный массив символов. Но const char*, а равно и char const* - это неконстантный указатель на константный массив символов. В то же время char* const - константный указатель на неконстантный массив символов. Но хлеще всех const char* const - константный указатель на константный массив символов.
![]()
1
|
01.06.2018, 16:11 [ТС] | 6 |
0
|
01.06.2018, 16:11 | |
Помогаю со студенческими работами здесь
6
В программе имеется следующий фрагмент: const char a='*'; char ch; как объявится указатель-переменная
[Ошибка] invalid conversion from 'const char*' to 'char*' [-fpermissive] Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |