Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Mgauk
27 / 27 / 5
Регистрация: 03.01.2011
Сообщений: 85

'const char[i]' to 'char[j]'

04.01.2011, 04:51. Показов 1625. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.
Усердно изучаю плюсы по Стивену Пратта. В ходе изучения возник вопрос, который в книге не освящён.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
struct bob {
       char name[50];
};
 
int main() {
    bob * ranch = new bob[20];
    ranch[0].name = "Hello!";
    return 0;
}
Почему ranch[0].name = "Hello!"; выбивает ошибку
10 C:\Documents and Settings\Admin\Мои документы\char.cpp incompatible types in assignment of `const char[7]' to `char[50]'
???

Такой вот теоретический вопрос к знатокам С++.
Причём если использовать не (динамический) массив структур, а одну структуру присваивается всё нормально.
Заранее благодарен за помощь. Просто не даёт покоя этот вопрос - дальше учу, а неприятный осадок остаётся от непонимания

PS: Среда Dev-C++
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.01.2011, 04:51
Ответы с готовыми решениями:

Чем отличаются объявления const char* и const* char
Прошу объяснить мне, чем отличаются объявления const char* и const* char и как объявить: указатель на константный массив символов, ...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что &quot;char *concat(char *,...)&quot;: невозможно преобразовать аргумент 1 из &quot;const char &quot;...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *'
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

4
Заблокирован
04.01.2011, 05:00
Цитата Сообщение от Mgauk Посмотреть сообщение
Привет всем.
Усердно изучаю плюсы по Стивену Пратта. В ходе изучения возник вопрос, который в книге не освящён.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
struct bob {
       char name[50];
};
 
int main() {
    bob * ranch = new bob[20];
    ranch[0].name = "Hello!";
    return 0;
}
Почему ranch[0].name = "Hello!"; выбивает ошибку

???

Такой вот теоретический вопрос к знатокам С++.
Причём если использовать не (динамический) массив структур, а одну структуру присваивается всё нормально.
Заранее благодарен за помощь. Просто не даёт покоя этот вопрос - дальше учу, а неприятный осадок остаётся от непонимания

PS: Среда Dev-C++
Замени
C++
1
char name[50];
на
C++
1
char* name;
А, вообще, конечно, лучше на
C++
1
const char* name;
либо оставив массив
C++
1
char name[50];
копируй в него
C++
1
strcpy(ranch[0].name, "Hello!");
А, если быть ещё более придирчивым, то: раз пишешь на C++, может уж лучше использовать std::string?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
04.01.2011, 05:13
И заодно использовать вектор а не динамический массив.
0
 Аватар для igorrr37
2895 / 2042 / 992
Регистрация: 21.12.2010
Сообщений: 3,791
Записей в блоге: 9
04.01.2011, 05:45
>Почему ranch[0].name = "Hello!"; выбивает ошибку

имя массива является константным указателем, а ты пытаешься его перенаправить на массив "Hello!"
0
 Аватар для Mgauk
27 / 27 / 5
Регистрация: 03.01.2011
Сообщений: 85
05.01.2011, 03:19  [ТС]
Всем спасибо за ответы


Цитата Сообщение от NightmareZ Посмотреть сообщение
Замени
C++
1
char name[50];
на
C++
1
char* name;
А, вообще, конечно, лучше на
C++
1
const char* name;
либо оставив массив
C++
1
char name[50];
копируй в него
C++
1
strcpy(ranch[0].name, "Hello!");
Так и делаю, просто была интересна теоретическая сторона моей ошибки

А, если быть ещё более придирчивым, то: раз пишешь на C++, может уж лучше использовать std::string?
Ещё не дочитал до стрингов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.01.2011, 03:19
Помогаю со студенческими работами здесь

Проблема с несовместимостью типов параметров char, const char, STRSAFE_LPWSTR, STRSAFE_LPCWSTR
Проблемные вопросы отражены на скрине Программа написана к заданию: 1. Разработать прикладной протокол для передачи файлов с помощью...

В программе имеется следующий фрагмент: const char a='*'; char ch; как объявится указатель-переменная
В программе имеется следующий фрагмент: const char a='*'; char ch; как объявляется указатель-переменная на константу:

Строки: почему компилятор пишет , что переменная типа char несовместима с const char?
char pass; int password( int d) { int m; char p; cout &lt;&lt; &quot;Введите пароль для доступа к информации:&quot;; cin &gt;&gt; p; ...

Ошибка error: invalid conversion from ‘char’ to ‘const char*’
Доброго времени суток, компилятор выдает, такую ошибки: ... /usr/lib/gcc/x86_64-pc-cygwin/7.4.0/include/c++/bits/stl_construct.h:75:7:...

Работа со строками - Invalid conversion from 'char' to 'const char*'
#include &lt;iostream&gt; #include &lt;ctype.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace std; void poisk(int n, char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru