Форум программистов, компьютерный форум CyberForum.ru

Выделение памяти указателю операцией new - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объяснить код программы http://www.cyberforum.ru/cpp-beginners/thread1644052.html
Объясните пожалуйста, каждую строку,что где означает void main() { int **a,i,j,k,m,n,b; cout<< "Vvedite n,m"<<endl; cin>>n>>m; cout<<endl; a=new int *;
C++ Вычислить сумму нечетных элементов второй колонки двумерного массива Тема: Обработка двумерных массивов Задан двумерный массив: S Вычислить сумму нечетных элементов из 2-й колонки. joradfas, Вы уже были предупреждены ранее о порядке именования тем, но проигнорировали замечания модераторов. Прочитайте правила форума и извольте впредь их соблюдать: http://www.cyberforum.ru/cpp-beginners/thread1644043.html
Найти одно собственное значение и соответствующий ему собственный вектор матрицы C++
Дана матрица 3х3: первая строка 1 3 0, вторая 0 3 -1 и третья 2 -4 1. Найти одно собственное значение и соответствующий ему собственный вектор матрицы варианта. Решение нелинейного уравнения найти методом простых итераций с заданной точностью по функции и по аргументу. Программа должна вывести найденный корень, значение функции в нём и количество выполненных итераций метода. (Если...
Написать класс для работы со временем C++
В общем, нужно написать класс время, создать перегрузки и так далее. А также сделать "красивый вывод" в поток, типа чч.мм:сс. Так вот, может кто, пожалуйста, помочь, сказать, как вывести в таком формате в поток? ну, например, время 2 часа 5 минут 0 секунд должно выглядеть как : 02.05:00. Пожалуйста, кто-нибудь....
C++ Упорядочить столбцы матрицы так, чтобы их последние элементы образовывали убывающую последовательность http://www.cyberforum.ru/cpp-beginners/thread1644004.html
Написать в с++ Дана матрица размера MxN . Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность
C++ Из массива строк удалить строку, номер которой задал пользователь Ввод с клавиатуры номера строки R. Удалить строку под номером R. Вывод полученного массива. (Причем когда строка удаляется, т.е. обнуляется, то на её место встает другая строка, происходит сдвиг). подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,150
Записей в блоге: 26
21.01.2016, 18:09     Выделение памяти указателю операцией new
Цитата Сообщение от Aqua77 Посмотреть сообщение
Зачем строковому указателю на char* s1; выделять память s1=new char[10]. Ведь при присваивании строки например "123456789" указателю автоматически присваивается нужное количество памяти для хранения определённой строки
Условно можно считать такой код бесполезным. Он эквивалентен следующему:

C
char *p;
p = new char[10];
p = new char[10];
второй new есть смысловой эквивалент строкового литерала "123456789", т.к. и оператор new и строковой литерал представляют собой указатели не некоторую память. Просто оператор new выделаяет память на этапе исполнения, а строковой литерал уже распределён в памяти к тому времени, как мы попали в main (и в этом смысле мой пример не совсем эквивалент).

На всякий случай - что такое строковой литерал: http://www.cyberforum.ru/blogs/18334/blog97.html

Если предполагается, что ты через указатель p будешь что-то модифицировать, то строку "123456789" нужно скопировать в память, куда указывает p. И делать это следует через функцию strcpy:

C
char *p;
p = new char[10];
strcpy (p, "123456789");
p[3] = 'q';
 
Текущее время: 12:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru