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

Разница между new char[] и new char[]()

05.02.2016, 17:10. Показов 25837. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Подскажите пожалуйста разницу, между следующим кодом:
C++
1
char* ch = new char[100];
и
C++
1
char* ch = new char[100]();
При использовании первого варианта, если туда ничего не записать, там хранится мусор. Со вторым вариантом проблем нету.

Из моего теста и догадок:
первый вариант использует malloc(), а второй еще и чистит (memset()). Так ли это?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2016, 17:10
Ответы с готовыми решениями:

В чем разница между char* и char **
в чем разница между char* и char ** ??

Разница между char и signed char
Не понимаю в чем разница между char и signed char, ведь char по умолчанию знаковый. Не комплилируется следующий фрагмент кода: void...

В чем разница между char* и char[]?
Доброго времени суток, наткнулся на одну загвоздку есть такой кусок кода int _tmain(int argc, _TCHAR* argv) { char *a =...

31
1 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 8
05.02.2016, 17:41  [ТС]
Студворк — интернет-сервис помощи студентам
SergioO, это скорее не функция, а define какойто)))
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
05.02.2016, 17:41
SergioO, http://en.cppreference.com/w/c... ialization
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
05.02.2016, 17:42
Olej, вы правы. Однако int a = int(); дает переменной значение 0, без обязательного её ввода.
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
05.02.2016, 17:45
Потому что при инициализации без указания значения происходит инициализация нулевым значением.
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
05.02.2016, 17:48
Olej, Visual Studio 2015
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    int a;
    std::cout << a << std::endl;
    system("Pause >> 0");
    return 0;
}
Ошибка C4700 использована неинициализированная локальная переменная "a"

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    int a = int();
    std::cout << a << std::endl;
    system("Pause >> 0");
    return 0;
}
Выводит в консоль "0"
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
05.02.2016, 17:52
Olej, нулевым default value
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
05.02.2016, 17:56
Ну и?

В 1-м случае у вас синтаксческая ошибка, дело даже не дошло до выполнения.
Если бы дошло, там бы был мусор.
(если бы вы использовали не говённый Windows компилятор, а GCC Linux - вы бы это увидели).

Во втором случае у вас происходит инициализация, но если не указано инициализирующее значение, то, как я и сказал выше, то инициализация происходит нулевым значением.

Добавлено через 2 минуты
нулевым default value
Читайте стандарт (языка C++, C++11, например ... не говённые описания в Windows для c++) ... где написано: "нулевое значение для данного типа данных".
1
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
05.02.2016, 17:59
Цитата Сообщение от Olej Посмотреть сообщение
если бы вы использовали не говённый Windows компилятор, а GCC Linux - вы бы это увидели
и писали бы на Си.
я б не был так категоричен.
Intel Compiler пойдет или тоже Г?
clang?
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
05.02.2016, 18:00
Olej, давайте не будем начинать разговор, какой компилятор хороший, какой плохой.
Суть в том, что можно использовать int() неявно инициализируя новую переменную, либо явно её инициализировать.

А вообще, разговор пошёл не в то русло, признаю свою ошибку - у встроенного типа в C++ конструктора быть не может
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
05.02.2016, 18:02
Цитата Сообщение от SergioO Посмотреть сообщение
Intel Compiler пойдет или тоже Г?
clang?
Clang - подойдёт ... если ... "вы умеете его готовить".
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
05.02.2016, 18:22
Цитата Сообщение от Olej Посмотреть сообщение
а GCC Linux - вы бы это увидели
вы и в VS в режиме отладки замечательно все увидите в отладчике, а вот c gdb каким-нибудь работать это мрак имхо.

Добавлено через 16 минут
Цитата Сообщение от Olej Посмотреть сообщение
если бы вы использовали не говённый Windows компилятор, а GCC Linux - вы бы это увидели
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    int a;
    std::cout << a << std::endl;
    system("Pause >> 0");
    return 0;
}
кормим данный код GCC и
./src/example.cpp:36:24: error: ‘system’ was not declared in this scope
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
05.02.2016, 18:42
Цитата Сообщение от SergioO Посмотреть сообщение
error: ‘system’ was not declared in this scope
Это абсолютно справедливо, т.к. system объявлена в <cstdlib>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2016, 18:42

Разница между char и int
Известно что для чар выделяется 1 байт (8 бит) для инт 4 байта (32 бита). Так почему нельзя в чар присвоить 10 и больше до 255 в виде...

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор не посылает куда подальше. Нет он конечно...

char и char* разница
Привет всем:) Изучаю С++ и вот застрял на задании где надо удалить символ из входного потока. В гугле нашел вот такое код( смотрите ниже...

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

(char)xx и '\xx' - в чём разница?
День добрый. Просто любопытно, почему cout &lt;&lt; (char)число; и cout &lt;&lt; '\число'; часто дают разный результат?


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru