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

Вопросы по С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Visual C++ C++ MFC-приложение, ошибка при рисовании. http://www.cyberforum.ru/cpp-beginners/thread340170.html
Учусь программировать, изучаю MFC. Решил написать простенькое приложение. Суть в том, чтобы на форме отображался прямоугольник(создал для него класс, включающий цвет, координаты и т.д.). Он реагирует на нажатие клавиш, перемещаясь по окну(работает). Все это реализовано в функции, которая вызывается из таймера. Все работает, доволен, но где-то после четырех тысяч вызовов(таймер срабатывает каждые...
C++ Посоветуйте решение. Есть пара значений вида: Значение(тип string) - число(тип float), которые нужно хранить "неразрывно". Значения передаются из другой функции, поэтому изначально количество таких пар не известно. Собственно в чем их хранить? Динамические массивы не предлагать. http://www.cyberforum.ru/cpp-beginners/thread340154.html
C++ Работа с динамическими массивами
Добрый день! Написал программу на си, которая рисует окружность в псевдографике: // Clocks.cpp : Defines the entry point for the console application. #include "stdafx.h" #include <iostream> #include <math.h> using namespace std;
C++ QT собирается четвертый час, "зависнув" на одном месте. Это нормальн?
Проблема в названии темы. Решил попробовать QT, скачал, выполнил, как положенно, "configure", после чего ввел "nmake". В мануале, по которому ставлю, сказанно, что на это может уйти около 3-х часов, вот уже идет четвертый час, все это время консоль находиться вот в таком виде: При чем до gmath.cpp дошло за 2-3 минуты, после этого ни чего не происходит. Скажите - это нормально? или стоит...
C++ bad_alloc http://www.cyberforum.ru/cpp-beginners/thread340126.html
народ че такое у меня прога прерывается и пишет "std::bad_alloc" ? кто знает что это? и как с этим бороться ?
C++ Считывание из файла Помогите пожалуйста,никак не могу найти,как считать данные из такого файла: Rup 106 12 38 40.2 -51 09 01 300.88 11.67 21.2 18.5 10.7 -17.8 4.3 NGC 4590 M 68 12 39 27.98 -26 44 38.6 299.63 36.05 10.3 10.2 4.1 -7.2 6.0 NGC 4833 12 59 33.92 -70 52 35.4 303.60 -8.02 6.6 7.0 3.6 -5.4 -0.9 NGC 5024 M 53 ... подробнее

Показать сообщение отдельно
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
08.08.2011, 18:20     Вопросы по С++
Постараюсь пояснить по указателям и const.
Указатели и спецификаторы const. Рассмотрим несколько видов:
- указатели на константу.
- константные указатели.
- константные указатели на константу.
Указатели на константу.
1) Здесь cptr указатель на объект типа const double и спецификатор const относится именно к типу объекта, на который указывает cptr, а не к самому указатели cptr непосредственно
C++
1
const double *cptr; //cptr может указывать на переменную типа double, которая является константой
C++
1
2
3
const double pi = 3.14;
double *ptr = &pi; //ошибка, так как ptr обычный указатель
const double *cptr = &pi; //все правильно, так как cptr - указатель на константу
2) Для хранения константного объекта нельзя использовать указатель типа void, вместо него следует использовать тип const void, который способен содержать адрес константного объекта.

C++
1
2
3
const int universe = 42;
const void *cpv = &universe; //все правильно, так как cpv является указателем константу
void *pv = &universe; //ошибка, так как universe константа
3) Указателю на константный объект м. б. присвоен адрес не константного объекта.
C++
1
2
3
const double *cptr;
double dval = 3.14;
cptr = &dval; //такой вариант прокатит, но изменить значение dval с помощью cptr нельзя
4) В продолжении предыдущего примера - есть такой хитрый вариант:
C++
1
2
3
4
5
6
...
dval = 3.1415; //неконстанта, переменная типа double
*cptr = 3.1415; //ошибка, cptr - указатель на константу.
double *ptr = &dval; //ptr указывает на не константный объект, переменную типа double
*ptr = 2.72; //все прокатит, так как ptr является обычным указателем на не константный объект, переменную типа double
cout << *cptr; //напечатет 2.72
Для указателя cptr не имеет значения, является ли объект, на который он указывает, константой или нет. Важно помнить, что нет никакой гарантии, неизменности объекта, адрес которого хранит указатель на константу. Указатели на константу имеет смысл рассматривать как указатели, которые "полагают", что указывают на константу.

Константные указатели.
1) Подобно любым другим константам, изменить значение константного указателя нельзя, т.е. ему нельзя присвоить адрес другого объекта.
C++
1
2
3
int ix = 0;
int *const ptrc = &ix; //ptrc - константный указатель, который следует инициализировать при создании
ptrc = ptrc; //ошибка! Так как ptrc - константный указатель, ему нельзя уже ничего присвоить!
2) Константный указатель можно использовать для изменения значения, на которое он указывает.
C++
1
2
3
4
5
int ix = 0;
int *const ptrc = &ix;
cout << ix << endl; //напечатает 0
*ptrc = 42;
cout << ix << endl; //напечатает 42
Константные указатели на константу.

1)
C++
1
2
const double pi = 3.1415;
const double *const pi_ptr = &pi; //константный указатель на константный объект
Тут не м. б. изменены ни адрес, который хранит указатель pi_ptr, ни значение объекта ( константы pi ), на который он указывает.

Использованные источники:
Стенли Липпман "Язык программирования C++ вводный курс" 4 изд.
google.ru
 
Текущее время: 18:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru