0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 94
|
||||||||||||||||
1 | ||||||||||||||||
Error C2065: необъявленный идентификатор08.07.2014, 09:11. Показов 2248. Ответов 16
Метки нет (Все метки)
В учебнике пишут, что если оператор new не может выделить память для нового объекта, он возвратит нулевой указатель, который содержит значение 0. Поскольку ссылка не может быть нулевой, то инициализировать ссылку на эту область памяти нельзя до тех пор, пока не будет установлено, что она не нулевая. В следующем примере показано, как это сделать:
я сделал, как сказано:
error C2065: rInt: необъявленный идентификатор но если закоментировать строку 7, то всё работает:
0
|
08.07.2014, 09:11 | |
Ответы с готовыми решениями:
16
Error C2065: i: необъявленный идентификатор Error C2065: cout: необъявленный идентификатор Error C2065: lpConsoleTitle: необъявленный идентификатор Error C2065: cout: необъявленный идентификатор |
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
08.07.2014, 09:19 | 2 |
Первое - учебник безбожно устарел. Ещё с прошлого века оператор new изменил поведение и всегда возвращает ненулевой указатель на успешно выделенный блок памяти. В случае неудачи он выбрасывает исключение.
Второе - в сообщении об ошибке явно указано на путаницу в именах (rInt вместо pInt).
2
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
||||||
08.07.2014, 09:38 | 3 | |||||
пример глупый, неправильный и вредный
во первых rInt это ссылка во вторых он определяется внутри if если переписать пример то это явно видно
о чем компилятор честно предупреждает тогда rInt объявлен уже в main Добавлено через 58 секунд третье где delete????
1
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
08.07.2014, 09:43 | 4 |
1
|
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 94
|
||||||
08.07.2014, 11:59 [ТС] | 5 | |||||
а оператор new возвращает именно указатель, или адрес области памяти?
Добавлено через 3 минуты а как правильно? такой вариант верный?:
0
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
08.07.2014, 12:01 | 6 |
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
08.07.2014, 12:03 | 7 |
да
это одно и тоже т.е выделил участок памяти и вернул адрес на этот участок, но адрес то это и есть указатель он говорит(указывает) пойди по такому то адресу и сделай то-то и то-то а вот ссылка это грубо говоря разыменованный указатель Добавлено через 1 минуту да
1
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
08.07.2014, 12:03 | 8 |
0
|
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 94
|
|
08.07.2014, 12:04 [ТС] | 10 |
я не знаю. где то прочитал, что указатель это переменная, которая содержит адрес. значит адрес и указатель это не совсем одно и то же. просто почему то в разных книгах терминология немного отличается. это запутывает
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
||||||
08.07.2014, 12:18 | 11 | |||||
ну да
ну раз пошли такие тонкости адрес это адрес улица Главная дом 1 а вот поле "куда" на конверте это указатель туда ты вписываешь адрес(инициализируешь,присваиваешь) если не написал адрес то указатель не инициализирован указывает в никуда значит
new выделяет память под один int и возвращает адрес выделенного участка памяти объявляется переменная типа "указатель на int" и инициализируется адресом который вернул new
1
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|||||||||||||||||||||
08.07.2014, 13:08 | 12 | ||||||||||||||||||||
а так, это альтернативный идентификатор для созданного объекта
т.е
а можно сломать систему
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
||||||
08.07.2014, 14:33 | 13 | |||||
ну а как он реализован?
и чем это будет отличатся от
ты это точно знаешь? "объект не существует" вот так правильней т.е утеряны с ним связи, но содержание его может не изменится, а может изменится так скажем неопределенное поведение, что у тебя и указано так же как в файловой системе при удалении файла, содержимое файла остается, удаляются ссылки на файл но при определенной сноровке можно достать содержимое, правда результат никто не гарантировал Добавлено через 32 минуты погнал ведь я разумеется правильно так *g разыменованный указатель
1
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
08.07.2014, 15:35 | 14 |
я не разработчик компилятора, но там нечто приближенное к указателю) толкьо типо безопасное
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
08.07.2014, 19:36 | 15 |
Ссылка - высокоуровневая концепция. Она может быть реализована, как ты говоришь, через разыменованный указатель. А может быть компилятор подставит сразу обращение к изначальной переменной. В этом случае это будет лишь псевдонимом, эквивалентным именем для существующей переменной и никаких указателей в реализации не будет. Иными словами, реализация зависит от конкретной ситуации. Я где-то здесь раньше приводил пример асмокода для разных ситуаций.
1
|
DrOffset
|
08.07.2014, 19:49
Error C2065: необъявленный идентификатор
#17
|
0
|
08.07.2014, 19:49 | |
error C2065: eof: необъявленный идентификатор Error C2065: xlineMAX: необъявленный идентификатор Error C2065: col_gray: необъявленный идентификатор Страуструп: error C2065: i–1: необъявленный идентификатор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |