реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> new int(80) и new int[80], в чем разница?
elusive
сообщение Apr 27 2011, 05:25
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



Здравствуйте!
Объясните пожалуйста суть конструкций.

int *a = new int(80); создает указатель на последовательность значений из 80 элементов

int *b = new int[80]; создает ссылку на массив из 80 элементов

а в чем разница? хоть так хоть так мы имеем 80 элементов нужного типа.
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 27 2011, 05:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(elusive @ Apr 27 2011, 09:25) *
int *a = new int(80); создает указатель на последовательность значений из 80 элементов
Нет. Создает один char, который инициализирует числом 80
Цитата
int *b = new int[80]; создает ссылку на массив из 80 элементов
Да
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 27 2011, 06:02
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(elusive @ Apr 27 2011, 08:25) *
Здравствуйте!
Объясните пожалуйста суть конструкций.

int *a = new int(80); создает указатель на последовательность значений из 80 элементов

int *b = new int[80]; создает ссылку на массив из 80 элементов

а в чем разница? хоть так хоть так мы имеем 80 элементов нужного типа.


Интересно. Вы хоть читаете ответы на вопросы, которые задаете на форуме? Я вам про это уже расстолковывал в посте:

http://electronix.ru/forum/index.php?showt...mp;#entry914361

Теперь вы снова про тоже самое. Чудно все это.
Go to the top of the page
 
+Quote Post
elusive
сообщение Apr 27 2011, 06:09
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



Цитата(sergeeff @ Apr 27 2011, 12:02) *
Интересно. Вы хоть читаете ответы на вопросы, которые задаете на форуме? Я вам про это уже расстолковывал в посте:

http://electronix.ru/forum/index.php?showt...mp;#entry914361

Теперь вы снова про тоже самое. Чудно все это.


конечно читал.
но я решил поднять этот вопрос отдельно и вот почему:
в книге Сергея Бобровского "Технологии C++ Builder" (стр.104) написано:

"Динамическое выделение памяти выполняет оператор new. Форма его записи такова:
new тип(число-элементов)
Данный оператор выделяет в оп.памяти пространство, в котором будут храниться заданное число элементов указанного типа. <...> Например:
int* a;
a = new int(100);
Переменную a можно использовать как указатель на последовательность значений из 100 элементов..."

Прочитав это и памятуя о вашем комментарии в той теме как раз и возник вопрос.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 27 2011, 06:24
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(elusive @ Apr 27 2011, 09:09) *
конечно читал.
но я решил поднять этот вопрос отдельно и вот почему:
в книге Сергея Бобровского "Технологии C++ Builder" (стр.104) написано:

"Динамическое выделение памяти выполняет оператор new. Форма его записи такова:
new тип(число-элементов)
Данный оператор выделяет в оп.памяти пространство, в котором будут храниться заданное число элементов указанного типа. <...> Например:
int* a;
a = new int(100);
Переменную a можно использовать как указатель на последовательность значений из 100 элементов..."

Прочитав это и памятуя о вашем комментарии в той теме как раз и возник вопрос.


Очень плохие книги вы читаете. Можете господину Бобровскому послать e-mail и сказать ему, что он не понимает смысла варажения

Код
a = new int(100);


А он таков. Создается новый объект типа int в куче путем вызова инициализирующего конструктора для переменной этого типа. Так как этот объект относится к типу POD (plain old data) http://www.informit.com/guides/content.asp...s&seqNum=32, то компилятор вызывает встроенный коструктор для данного типа переменной, инициализирует ее, и возвращает вам адрес этого объекта.

А вам советую в качестве настольной книги 2-х томник Брюса Эккеля ""Философия С++".
Go to the top of the page
 
+Quote Post
Idle
сообщение Apr 27 2011, 08:41
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Цитата(elusive @ Apr 27 2011, 09:25) *
int *b = new int[80]; создает ссылку на массив из 80 элементов

точно ссылку? может указатель?
Go to the top of the page
 
+Quote Post
elusive
сообщение Apr 27 2011, 09:44
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



Цитата(Idle @ Apr 27 2011, 14:41) *
точно ссылку? может указатель?


Бобровский утверждает что ссылку
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Apr 27 2011, 10:11
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(elusive @ Apr 27 2011, 13:44) *
Бобровский утверждает что ссылку

Он не прав.
Go to the top of the page
 
+Quote Post
dxp
сообщение Apr 27 2011, 10:58
Сообщение #9


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(elusive @ Apr 27 2011, 13:09) *
"Динамическое выделение памяти выполняет оператор new. Форма его записи такова:
new тип(число-элементов)
Данный оператор выделяет в оп.памяти пространство, в котором будут храниться заданное число элементов указанного типа. <...> Например:
int* a;
a = new int(100);
Переменную a можно использовать как указатель на последовательность значений из 100 элементов..."


Цитата(elusive @ Apr 27 2011, 16:44) *
Бобровский утверждает что ссылку

Скорее закройте эту книгу и никогда больше не ищите в ней ответов на вопросы. Такие грубые ошибки недопустимы даже для неофициальных источников, не то что издаваемых книг. Они там что - рецензирование совсем отменили? Ведь это же сразу обнаруживается.

Читайте классиков - Страуструпа, Липпмана, Элджера и других (что уже посоветовали).


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 27 2011, 11:33
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



А кто рецензировать то будет? Такие же как Бобровский? Вспоминаю как ко мне, студенту, приходили доценты и выспрашивали тонкости работы 8080, а на следующий день лекции студентам читали. Сами посидели бы месяцок-другой, не приходили бы. Вот и Бобровский такой же, слышал звон .... Беда, право.
Go to the top of the page
 
+Quote Post
Idle
сообщение Apr 27 2011, 16:25
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



мда, Бобровский не того sm.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 09:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01443 секунд с 7
ELECTRONIX ©2004-2016