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

кое-что про const - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ exception : 0xC0000005: Access Violation http://www.cyberforum.ru/cpp/thread632008.html
Разработка идет по windows mobile 6. Возникла необходимость в определенном случае менять данные в памяти по адресу 0x02020000 cо смещение 0x4a. Написал в лоб: int offset = 0x4a; int Addr = 0x02020000; Addr += offset; char * c = (char *) Addr; *c = 0x1; Выдает исключение: exception : 0xC0000005: Access Violation. Нет доступа к памяти. Попытался сделать через ReadProccessMemory и...
C++ Можно ли написать такую программу Здравствуйте! Мне нужна программа, которая содержала бы в себе всего два поля, при заполнении которых, содержимое этих полей сохранялось в файл на сервере (сайте например). Так же, нужно чтобы программа содержала кнопку "Отправить", для передачи содержимого полей на сервер и сообщение о удачной отправке. Можно ли написать такую программу на С++? http://www.cyberforum.ru/cpp/thread631692.html
Очень долгое освобождение динамически выделенной памяти C++
Все никак не могу разобраться с одной проблеммой! У меня есть отображение, в котором хранятся указатели на абстрактный класс Node typedef map <int num ,Node*> NodeCont;. //Абстрактный класс узла class Node { public: virtual ~Node()=0; //// ....
utf-8 <-> int32 C++
Есть строка s формата utf-8 длины l и число n типа int32 или uint32, которое является уникальным идентификатором строки s. Какие существуют алгоритмы или готовые библиотеки для нахождения s, зная n и нахождения n, зная s. И какое будет максимально возможное значение l?
C++ Бесплатные тесты по С++ на Brainbench http://www.cyberforum.ru/cpp/thread623156.html
На http://www.brainbench.com бесплатно доступен тест по С++. Тест не сложный, думаю, многим будет интересно попробовать свои силы и узнать слабые места. Вроде как подобные тесты иногда даже "засчитываются" работодателями, так что прохождение может иметь практический смысл.
C++ [IDA PRO] Интересное выражение Реверсил драйвер. Наткнулся на выражение: v1 = &Irp1->Tail.Overlay.UnkUnion.CurrentStackLocation; *v1 = 12; Собственно как его понимать? Что значит ? (CurrentStackLocation - cтруктура) И чему второе присваивает? Спрашиваю, т.к. нет возможности проверить на практике. Имеется только код. подробнее

Показать сообщение отдельно
ValeryS
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,653

кое-что про const - C++

09.08.2012, 13:27. Просмотров 1608. Ответов 11
Метки (Все метки)

решил обновить свои знания про const
и везде вижу что const это константа инициализировать нужно при объявлении.....ну это мы и так знаем

Не по теме:

а еще такое "константная переменная" это типа "Небесная тверь" или "под сенью солнца"


меня интересует когда она инициализируется на этапе компиляции или при исполнении
вот так ведь правильно
C++
1
2
const int d=5;
int n[d];
т.е размер массива известен до исполнения
и так правильно
C++
1
2
3
int x;
   std::cin >> x;
   const int XXX = x;
переменная XXX будет известна при исполнении
а вот так уже неправильно ошибка компиляциии
C++
1
2
3
std::cin >> x;
   const int XXX = x;
int n[XXX];
ну решил скомпилировать и посмотреть
и так первый вариант
C++
1
2
  int a=5;  
    const int d=a;
Assembler
1
2
3
4
5
  int a=5;  
  mov         dword ptr [ebp-20h],5 
    const int d=a;
  mov         eax,dword ptr [ebp-20h] 
  mov         dword ptr [ebp-2Ch],eax
все понятно переменная в стеке, вся константность на совести компилятора, теоретически через указатели стека можно поменять(возьмем указатель на a сдвинем и можно менять)

C++
1
2
3
4
const int d=5;
    int n[d];
    for (int i=0;i<d;i++)
          n[i]=0;
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
013816EB  mov         dword ptr [ebp-2Ch],5 
    int n[d];
    for (int i=0;i<d;i++)
013816F2  mov         dword ptr [i],0 
013816F9  jmp         main+64h (1381704h) 
013816FB  mov         eax,dword ptr [i] 
013816FE  add         eax,1 
01381701  mov         dword ptr [i],eax 
01381704  cmp         dword ptr [i],5 
01381708  jge         main+77h (1381717h) 
          n[i]=0;
0138170A  mov         eax,dword ptr [i] 
0138170D  mov         dword ptr [ebp+eax*4-48h],0 
01381715  jmp         main+5Bh (13816FBh)
во как
константе присваивается во время исполнения(строка 013816EB)
а для массива во время компиляции ( 01381704 )
не зря я их недолюбливал
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru