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

Работа с const - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как получить картинку с видео источника http://www.cyberforum.ru/cpp/thread349463.html
Люди пожалуйста подскажите... Как получить картинку с видео источника, меня интересует как на С++ visual studio получить входящий поток с веб камеры...(в крайнем случае на билдере) Я пытался на...
C++ ffmpeg Всем привет, помогите начинающему разобраться с такой проблемой: ffmpeg + sdl - очень долго приложение сидит в функции av_find_stream_info (от 2 до 10 секунд). В чем может быть проблема? Заранее... http://www.cyberforum.ru/cpp/thread348640.html
как работать с каждой цифрой четырехзначного числа по отдельности. C++
Вот есть задача на с++. Но не знаю с чего начать... как работать с каждой цифрой четырехзначного числа по отдельности.
Linker error C++
При попытке скомпилить программу выдаёт ошибки: undefined reference to `InternetOpenA@20' undefined reference to `InternetConnectA@32' undefined reference to `HttpSendRequestA@20' undefined...
C++ движок или игра на C++ http://www.cyberforum.ru/cpp/thread347709.html
Здравствуйте, интерестно узнать ваше мнение..что будем лучше быстрее: 1. Создать большую игру на C++ Или 2. Написать прогу т.е. движок для содания игр на C++ ...
C++ поиск Handle окна, зная ControlId окна вопрос по сабжу подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17954 / 6185 / 414
Регистрация: 30.03.2009
Сообщений: 16,974
Записей в блоге: 27
11.09.2011, 00:32
Цитата Сообщение от easybudda Посмотреть сообщение
Думаю, вообще хорошая практика объявлять константным всё, что по логике программы не должно изменяться. Во-первых больше шансов заметить ошибку, во-вторых тонкостей не знаю, но с памятью "только для чтения" работа как-то веселее происходит...
Статические переменные (переменные с временем жизни "вся программа") с квалификатором const многие компиляторы складывают в отдельные секции, которые в исполняемом файле попадают сегменты с исполняемым кодом и на уровне операционной системы они попадают в read-only память. Си'шные строковые литералы (текст в кавычках) по сути дела тоже являются const-объектами.

Следующие два кода без проблем пройдут компиляцию. В первом коде имеет место быть явное преобразование указателей и компилятор снимает с себя всю ответственность. Во втором коде работаем со строковым литералом, который по сути есть const-объект, но по языку можно его присваивать в указатель на char без модификатора const, Под линуксом эти коды сломаются на исполнении, под виндой - нет (по крайней мере на борланде у меня не упало)

C
1
2
3
4
5
6
7
8
9
const int a = 5;
 
int main (void)
{
  int *p;
  p = (int*) &a;
  *p = 0;
  return 0;
}
C
1
2
3
4
5
6
int main (void)
{
  char *p = "abcde";
  *p = 0;
  return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru