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

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

Войти
Регистрация
Восстановить пароль
 
Mger
1 / 1 / 0
Регистрация: 24.04.2013
Сообщений: 31
#1

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

28.03.2014, 21:16. Просмотров 252. Ответов 2
Метки нет (Все метки)

Часто вижу, при создании объекта класса, создают указатель на объект

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
class Rectangle {
public:
    int width, height;
};
int main()
{
     Rectangle  *a;
     
     return 0;
}
или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
class Rectangle {
public:
    int width, height;
};
int main()
{
     Rectangle  *a=new int;
     
     return 0;
}
зачем создать указатель ?

И какая разница между
C++
1
int *p;
и
C++
1
int *p=new int;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2014, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разница между объявлениями указателя (C++):

Разница между объявлениями указателей - C++
Есть такое: int *p; и такое: int *p = new int; Поясните, пожалуйста, в чём разница между этими объявлениями указателей?

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

разница между указатель на функцию и функция возврата указателя? - C++
подскажите пожалуйста очень срочно надо (вопрос на зачет)

Различные варианты инициализации указателя - в чём точная разница между ними? - C++
Немного непонятен один момент. Есть некий класс Statement (конструктор используется по умолчанию). Вот четыре различных записи...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
28.03.2014, 21:31 #2
C++
1
Rectangle  *a = new Rectangle;
оператор new - выделяет память.

После удачного выполнения такой операции, в оперативной памяти компьютера происходит выделение диапазона ячеек, необходимого для хранения переменной заданного типа.

Также указатель может указывать на другой объект класса.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main()
{
    int var = 123; // инициализация переменной var числом 123
    int *ptrvar = &var; // указатель на переменную var (присвоили адрес переменной указателю)
 
    std::cout << "&var    = " << &var << std::endl;// адрес переменной var содержащийся в памяти, извлечённый операцией взятия адреса
    std::cout << "ptrvar  = " << ptrvar << std::endl;// адрес переменной var, является значением указателя ptrvar
    std::cout << "var     = " << var << std::endl; // значение в переменной var
    std::cout << "*ptrvar = " << *ptrvar << std::endl; // вывод значения содержащегося в переменной var через указатель, операцией разименования указателя
 
    return 0;
}
Результат работы:

Код
&var    = 0x22ff08
ptrvar  = 0x22ff08
var     = 123
*ptrvar = 123
Пример работы с указателями:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main()
{
    std::cout << "Enter massive size: ";
 
    size_t size;
    std::cin >> size;
 
    int* mas = new int[size];
 
    for(size_t i = 0; i < size; ++i)
        mas[i] = rand();
 
    for(size_t i = 0; i < size; ++i)
        std::cout << mas[i] << ' ';
 
    std::cout << std::endl;
 
    return 0;
}
Мы выделяем заданное количество памяти под массив и производим над ним операции.
1
Croessmah
Эксперт CЭксперт С++
13237 / 7509 / 847
Регистрация: 27.09.2012
Сообщений: 18,448
Записей в блоге: 3
Завершенные тесты: 1
28.03.2014, 22:17 #3
Цитата Сообщение от Mger Посмотреть сообщение
И какая разница между
такая же как между
C++
1
int x ;
и
C++
1
int x = 666 ;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2014, 22:17
Привет! Вот еще темы с ответами:

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

В чем разница массива и указателя в данной ситуации? - C++
Одно только не понятно, почему не равно если число символов одинаковое и в данном случае адрес одинаковый? В чем разница массива и...

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

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


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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