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

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

Войти
Регистрация
Восстановить пароль
 
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
#1

указатели и new - C++

27.02.2013, 20:27. Просмотров 426. Ответов 11
Метки нет (Все метки)

объясните разницу между
C++
1
int *p = new int;
и
C++
1
int *p;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2013, 20:27     указатели и new
Посмотрите здесь:

Указатели* - C++
Объясните что происходит в последней строке , и если мои комменты не правильны поправьте пожалуйста. void order ( int* numb1, int*...

Указатели.... - C++
Найти наибольшее отрицательное число с четными индексами. (Создать указатель на наиболее отрицательное число среди элементов с четными...

Указатели - C++
Используя вместо самой переменной указатель на нее, написать программу в соответствии с заданием (выполнение задания оформить...

Указатели - C++
Всем привет. Нам дали сделать лабу: Дана целочисленная прямоугольная матрица. 1) Определить номер первого из столбцов, содержащих хотя...

Указатели - C++
Есть задание,я сделала через массив,а мне нужно переделать через указатели. #include <iostream.h> #include <stdio.h> #include...

Указатели - C++
Вводится строка слов, разделенных пробелами (возможны лишние пробелы в начале и в конце строки и между словами). Скопировать в новую строку...

Указатели - C++
Доброй ночи! Вот столкнулась с такой проблемой, нужно из одной функции в другую перенести переменную number через указатель, что у меня...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
27.02.2013, 20:48     указатели и new #2
В первом случае выделяется память под одно целое число и указателю присваивается значение, указывающее на эту выделенную память. Во втором случае просто создаётся указатель. Указывать он может в самые неожиданные места.
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 21:01  [ТС]     указатели и new #3
т.е. я могу написать приблизительно следующее:
C++
1
2
int *p = new int;
*p = 10;
и в данном случае число 10 у меня будет храниться в выделенной памяти?
что будет если я напишу:
C++
1
2
int *p;
*p=10;
?
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
27.02.2013, 21:18     указатели и new #4
да, в первом случае действительно будет всё в порядке. Второе недопустимо. А вообще говоря, не бойтесь, пробуйте. Синим пламенем вряд ли что-то загорится.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.02.2013, 21:20     указатели и new #5
Ничего хорошего (зависит от компилятора). Попытка записать значение в невыделенную память.
ITcrusader
Эксперт C++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
27.02.2013, 21:27     указатели и new #6
Цитата Сообщение от CEBEP Посмотреть сообщение
А вообще говоря, не бойтесь, пробуйте.
Отличный совет новичку.
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
27.02.2013, 21:29  [ТС]     указатели и new #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Ничего хорошего (зависит от компилятора). Попытка записать значение в невыделенную память.
т.е. загвоздка в том, что в случае int *p; мы не выделяем память, а просто объявляем пустой указатель?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.02.2013, 21:36     указатели и new #8
Цитата Сообщение от lowlol Посмотреть сообщение
т.е. загвоздка в том, что в случае int *p; мы не выделяем память, а просто объявляем пустой указатель?
Да. Память выделяется под сам указатель. Но под int, на который он должен указывать, нет.
ITcrusader
Эксперт C++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
27.02.2013, 21:37     указатели и new #9
загвоздка в том, что такой подход приведет к неопределенному поведению. А это значит, что твоя программа, может и будет работать. Но однажды она таки сгорит синим пламенем во время выполнения, скорее всего, когда будешь показывать начальству.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.02.2013, 21:41     указатели и new #10
Что находится при этом в самом указателе, наверное, зависит от компилятора. Если сделать так:
C++
1
2
3
int *p;
cout << &p << endl;
cout << p << endl;
то студия выдаст это.
Миниатюры
указатели и new  
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
27.02.2013, 21:52     указатели и new #11
Цитата Сообщение от alsav22 Посмотреть сообщение
наверное, зависит от компилятора.
Что было в этой памяти, то и получили.
вот примерчик:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
void foo1(){
    volatile int p=213;
    p*=2;
    std::cout<<p<<std::endl;
}
 
void foo2(){
    volatile int p;
    p*=2;
    std::cout<<p<<std::endl;
}
int main(){
    foo1();
    foo2();
}
Результат у меня в MinGW:
Название: Безымянный.png
Просмотров: 38

Размер: 2.5 Кб
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 22:07     указатели и new
Еще ссылки по теме:

Указатели - C++
1) Предположим, что p - указатель, установленный на целую переменную со значением 3. Что можно сказать о значении выражений p, * p, &amp; p, *...

Указатели - C++
Почему такой вариант кода невозможен(конкретно: строка 6)?int indicator, x = 15, y = 10; int *ptr; cin &gt;&gt; indicator; ...

Указатели - C++
Доброго времени суток. У меня задание. Кто поможет? Сказали разобраться с указателями. Программа ругается на +=, выдает ошибку. Как их...

указатели - C++
1) создать функцию(проблем нет) 2) в функции ввести и определить локальную переменную типа int и задать ей значение 1(проблем нет) 3) в...

Указатели - C++
Всем здрасьте ! Тут на днях я прочитал про указатели в одной книге , и мало что о них понял. Не могил бы вы мне рассказать , что это...


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

Или воспользуйтесь поиском по форуму:
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
27.02.2013, 22:07     указатели и new #12
0xcccccccc - такими значениями забивает неинициализированную память отладчик msvc++.
Yandex
Объявления
27.02.2013, 22:07     указатели и new
Ответ Создать тему
Опции темы

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