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

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

Войти
Регистрация
Восстановить пароль
 
ДЕСАНТУРА
6 / 6 / 3
Регистрация: 25.02.2015
Сообщений: 173
#1

Что значит запись - C++

05.09.2015, 13:05. Просмотров 208. Ответов 6
Метки нет (Все метки)

Собственно интересует, что значит обратиться к "-1" элементу в массиве "old_vtable_" и что я присвою 3 элементу в массиве "_array"?. Объясните пожалуйста.

C++
1
2
3
4
DWORD** old_vtable_ = 0;
DWORD** _array = 0;
 
_array[2] = old_vtable_[-1];
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
05.09.2015, 13:08     Что значит запись #2
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
Объясните пожалуйста.
для указателей запись вида pointer[index] будет развернута в *(pointer+index):
Соответственно
C++
1
_array[2] = old_vtable_[-1];
будет развернуто в
C++
1
*(_array+2) = *(old_vtable_-1);
beam
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 41
05.09.2015, 13:16     Что значит запись #3
а почему используется 2 **? Указатель ведь с 1 звездой
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
05.09.2015, 13:21     Что значит запись #4
Цитата Сообщение от beam Посмотреть сообщение
а почему используется 2 **? Указатель ведь с 1 звездой
указатель на указатель
ДЕСАНТУРА
6 / 6 / 3
Регистрация: 25.02.2015
Сообщений: 173
05.09.2015, 13:43  [ТС]     Что значит запись #5
Цитата Сообщение от Croessmah Посмотреть сообщение
будет развернуто в
Код C++Выделить код
1
*(_array+2) = *(old_vtable_-1);
И все же - адрес первого элемента массива будет [0], а чему будет равен [-1], это адрес чего будет?
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
05.09.2015, 13:48     Что значит запись #6
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
это адрес чего будет?
Это будет адрес памяти (элемента) "перед" тем, на который "указывает" old_vtable_
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    int * p = new int ;
    std::cout << p << std::endl ;
    std::cout << (p-1) << std::endl ;
}
http://rextester.com/DTW49239
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2015, 14:08     Что значит запись
Еще ссылки по теме:

C++ Что значит запись C++
Что значит запись char massiv[] = "text" ? C++
Что значит запись "if (b & 1)" C++
C++ Нюансы синтаксиса:что значит запись f *= i ?
Нюансы синтаксиса: что значит запись newPtr-> nextPtr=firstPtr ? C++

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

Или воспользуйтесь поиском по форуму:
ДЕСАНТУРА
6 / 6 / 3
Регистрация: 25.02.2015
Сообщений: 173
05.09.2015, 14:08  [ТС]     Что значит запись #7
Цитата Сообщение от Croessmah Посмотреть сообщение
Это будет адрес памяти (элемента) "перед" тем, на который "указывает" old_vtable_
понял спасибо
Yandex
Объявления
05.09.2015, 14:08     Что значит запись
Ответ Создать тему
Опции темы

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