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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Zidane Tribal
0 / 0 / 0
Регистрация: 27.06.2013
Сообщений: 5
#1

Разница между объявлениями указателей - C++

12.12.2013, 18:56. Просмотров 340. Ответов 8
Метки нет (Все метки)

Есть такое:
C++
1
int *p;
и такое:
C++
1
int *p = new int;
Поясните, пожалуйста, в чём разница между этими объявлениями указателей?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 18:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разница между объявлениями указателей (C++):

Разница между объявлениями указателя - C++
Часто вижу, при создании объекта класса, создают указатель на объект #include <iostream> using namespace std; class...

Какая разница между разными объявлениями объектов? - C++
чет 4 месяца не писал на С++ а писал на сшарпе немного. Но вот вернувшись к С++ чет вылетело с головы. Какая разница между обвявлением...

Указатели на массивы: В чем принципиальное различие между объявлениями указателей? - C++
Вопрос по теории В чем принципиальное различие между данными обьявлениями? (+ правильно ли я понимаю, что 1и2, 3и4 это синонимы?) ...

Разница между объявлениями const Person p1 и Person const p1 - C++
Всем привет. Собственно весь вопрос уместился в заголовок: в чем разница между объявлениями const Person p1 и Person const p1, если...

Объяснить разницу между объявлениями массивов - C++
Добрый. Расскажите в чем разница между: double **MatrixA; double *MatrixA; double MatrixA;

Разница между != и <= - C++
Здравствуйте! Писал программу с использованием QuickSort и заинтересовала такая вещь: void quickSort(int arr, int left, int right) { ...

8
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
12.12.2013, 19:10 #2
В первом случае указатель надо приравнять нулю чтобы не указывал неизвестно куда
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
12.12.2013, 19:18 #3
1. Не инициализированный указатель.
2. Указатель, инициализированный выделенной областью памяти под значение типа int
0
Bino321
2 / 2 / 0
Регистрация: 22.11.2013
Сообщений: 33
12.12.2013, 19:21 #4
Во втором случае указатель указывает на только что созданную интовую переменную. А в первом - создан просто сам указатель... Типа как по аналогии
1)int a;
2)int a=1;
0
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,639
Записей в блоге: 3
Завершенные тесты: 1
12.12.2013, 19:53 #5
Цитата Сообщение от castaway Посмотреть сообщение
1. Не инициализированный указатель.
Если глобальная переменная, то инициализируется нулем.
0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
12.12.2013, 19:56 #6
Цитата Сообщение от Zidane Tribal Посмотреть сообщение
int *p = new int;
два в одном. объявление + инициализация
0
ElenaBilyk
4 / 4 / 1
Регистрация: 22.10.2013
Сообщений: 34
12.12.2013, 19:58 #7
Цитата Сообщение от Zidane Tribal Посмотреть сообщение
Есть такое:
C++
1
int *p;
и такое:
C++
1
int *p = new int;
Поясните, пожалуйста, в чём разница между этими объявлениями указателей?
Первый указатель - это указатель, которому потом нужно будет присвоить память, то, на что он указывает.
Пока этого не сделаешь, работать с ним нельзя. Ему можно дать адрес любого int или выделить под него память new.
Второй указатель уже поставлен на адрес памяти в куче, с ним уже можно работать, давать какое-то значение, выводить на экран...Но не забудь, что потом память нужно будет освободить)))))
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
12.12.2013, 21:58 #8
Croessmah, сильно сомневаюсь.

Добавлено через 13 минут
...
0
Croessmah
Эксперт CЭксперт С++
13416 / 7570 / 855
Регистрация: 27.09.2012
Сообщений: 18,639
Записей в блоге: 3
Завершенные тесты: 1
12.12.2013, 22:34 #9
Цитата Сообщение от castaway Посмотреть сообщение
Croessmah, сильно сомневаюсь.
Цитата Сообщение от 3.6.2.2
Variables with static storage duration (3.7.1) or thread storage duration (3.7.2) shall be zero-initialized (8.5) before any other initialization takes place.
указатель это скалярный тип
Цитата Сообщение от 8.5.5
To zero-initialize an object or reference of type T means:
— if T is a scalar type (3.9), the object is set to the value 0 (zero), taken as an integral constant expression, converted to T;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 22:34
Привет! Вот еще темы с ответами:

Разница между if else и else if - C++
Привет, у меня возник &quot;нубский&quot; вопрос. Этот код, это же соркащенная версия нижнего? int i = 3; if (i == 1) ...

Разница между 0 и 00 ? - C++
Как заставить программу различать 0 и 00 (ноль и два ноля, как в рулетке)? Вариант с заменой 00 на какое-то число не подходит, так как...

Разница между С и С++ - C++
Если не брать во внимание объекты и классы, то разница состоит только лишь в cin, cout и директивах?

В чем разница между [] и * ? - C++
Думал, что ни в чем, но когда попытался сделать так: (в файле 1) char lc; в файле 2: extern char* lc; Компилятор ругаться не стал,...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
12.12.2013, 22:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru