Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 21.09.2017
Сообщений: 31

Видимость переменных и текстовая строка нулевой длины

09.03.2018, 20:43. Показов 2671. Ответов 61
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
имеется:
C++
1
2
3
4
5
if (len == 0)
    {
        char res[] = "";
    }
char res1[] = "";
результат:

res identifier "res" is undefined

res1 0x003bfb97 "" char[1]

len 0 int

Помогите разобраться, почему вне условия массив определен, а внутри нет ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2018, 20:43
Ответы с готовыми решениями:

Пустая строка против строки нулевой длины
Как лучше проверять std::string на пустоту: s=="" или s.lengt()==0?

Текстовая строка
Всем доброго времени суток) У меня есть один вопрос.Помогите кто сможет. Нужно составить программу, которая может напечатать строку...

Программа как текстовая строка
Создайте программу, которая запрашивает текстовую строку и заменяет все буквы д на к, а символ , на *. Введите строку: Надежда -...

61
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
09.03.2018, 21:21
C++
1
2
char *c = new char[0];
c = "";
нет?

Добавлено через 47 секунд
При вашем объявлении, размерность должна быть отлична от нуля и задаваться константой
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.03.2018, 21:30
Цитата Сообщение от boolc Посмотреть сообщение
Помогите разобраться, почему вне условия массив определен, а внутри нет ?
В блоке объявляешь res, поэтому область видимости его от места объявления и до конца блока. И он, у тебя, не нулевого размера.

Добавлено через 5 минут
...
0
1 / 1 / 0
Регистрация: 21.09.2017
Сообщений: 31
09.03.2018, 21:35  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
И он, у тебя, не нулевого размера.
имеется ввиду, что там есть элемент '\0' ?

Цитата Сообщение от nd2 Посмотреть сообщение
В блоке определяешь res, область видимости его от места определения и до конца блока.
это кусок функции, по задумке из этого блока будет возвращаться результат выполнения функции. Но да, конечно, я забыл про это.

Цитата Сообщение от Hitoku Посмотреть сообщение
нет?
Да, спасибо. Хотя моя иде сьела это только при const char *c

Добавлено через 1 минуту
P.S. Можно закрывать, всем спасибо.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.03.2018, 21:37
Цитата Сообщение от Hitoku Посмотреть сообщение
нет?
Нет, тут две ошибки: память не выделена, и утеряна (а если не выделена, то какая разница? А тогда, зачем, вообще, здесь new?).
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
09.03.2018, 21:42
nd2, чтобы явно показать ТС, что размерность 0
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.03.2018, 21:44
Цитата Сообщение от Hitoku Посмотреть сообщение
чтобы явно показать ТС, что размерность 0
К этой фразе требуется пояснение. Каким образом и что показать? Как не нужно делать? Или что?
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
09.03.2018, 22:03
nd2, уже не важно
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.03.2018, 22:45
Цитата Сообщение от Hitoku Посмотреть сообщение
уже не важно
Смотря для чего. Если человек может признавать свои ошибки - это плюс, если нет - это минус.
0
09.03.2018, 22:52

Не по теме:

nd2, на самом деле мне не понятна суть вопроса...
Объясню сначала. У нас есть пример

C++
1
char res1[] = "";
я на это отвечаю: нет, таким образом нужно указывать размерность, поэтому вот
C++
1
char *c = new char[0]; //<- видишь? -->0<-- элементов
Да, конечно можно сделать вот так
C++
1
char *c = "";
и ничего не изменится.
Но в итоге я вижу
Цитата Сообщение от nd2 Посмотреть сообщение
Если человек может признавать свои ошибки
и мне ничего не понятно :D

0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.03.2018, 22:55
Цитата Сообщение от Hitoku Посмотреть сообщение
нет, таким образом нужно указывать размерность, поэтому вот
Что нет? Так размерность нельзя указывать?
Цитата Сообщение от boolc Посмотреть сообщение
C++
1
char res[] = "";
Или что?
0
09.03.2018, 23:02

Не по теме:

nd2, а, понятно :D мне почему-то казалось, что именно в таком случае необходимо задавать размерность, иначе такой вариант не отработает...

0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
09.03.2018, 23:04
Цитата Сообщение от Hitoku Посмотреть сообщение
и ничего не изменится.
Изменится. Будет ошибка компиляции.
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
09.03.2018, 23:05
Croessmah, а у меня не возникала
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.03.2018, 23:09
Цитата Сообщение от Hitoku Посмотреть сообщение
мне почему-то казалось, что именно в таком случае необходимо задавать размерность,
Но только не так:
Цитата Сообщение от Hitoku Посмотреть сообщение
C++
1
char *c = new char[0];
Память вообще не выделяется.
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
09.03.2018, 23:11
Цитата Сообщение от Hitoku Посмотреть сообщение
а у меня не возникала
Печаль, значит Вы так и не узнаете о ней.
До поры до времени. )))
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
09.03.2018, 23:11
nd2, ну тема называется "Нулевой массив", так что вполне логично
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.03.2018, 23:12
Цитата Сообщение от Hitoku Посмотреть сообщение
ну тема называется "Нулевой массив", так что вполне логично
Что логично? Показывать, как не нужно делать? И не предупреждать об этом?
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
09.03.2018, 23:13
Croessmah, вроде я подобными делами не занимаюсь и заниматься не планирую, так что, надеюсь, что у меня получится эту ошибку избежать
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.03.2018, 23:15
Цитата Сообщение от Croessmah Посмотреть сообщение
До поры до времени. )))
А почему бы не сразу?
C++
1
2
char *c = "";
*c = 'a';
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2018, 23:15
Помогаю со студенческими работами здесь

Не передаётся текстовая строка между формами
что имеию: приват переменную которая должна содержать текст, для задания которой написал сеттитл 1) обработчик клика на 1 форме void...

Видимость переменных
Здравствуйте. Нашёл такой пример - в одном скрипте создавались переменные А в другом скрипте к ней обращались: У меня...

Видимость переменных
Может кто-нибудь сможет объяснить Если мы напишем вот так public class T{ int x=1; public static void main (String args){ int...

Видимость переменных
Подскажите как использовать переменные lon и lat например в других функциях? Как их там &quot;увидеть&quot; ? function...

Видимость переменных
Ребята подскажите как правильно передать значение переменной data в переменную id_pole чтобы вывести ее значение за пределами функции? ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru