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

Недопонимание кода - C++

Восстановить пароль Регистрация
 
Marseil
2 / 2 / 0
Регистрация: 29.10.2012
Сообщений: 18
09.01.2014, 03:24     Недопонимание кода #1
Я разбираю некоторый код С++ (Сразу скажу, что учил с++ самостоятельно, не супер профи) и там есть некоторые строчки, которые я не до конца понимаю. (Код из CryEngine3).

C++
1
const SAccessoryParams accessory=m_sharedparams->accessoryparams[i];
Я не знаю что делает "->"

Благодарю всем кто поможет и по людски объяснит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
09.01.2014, 03:27     Недопонимание кода #2
-> это фактически (* ).
Обращение через . по значению, через -> по указателю.
То есть m_sharedparams является указателем, сначала идет его разыменование и потом обращение к свойству. Если бы он был обычной переменной, то то же самое проделывалось бы через точку.

Добавлено через 34 секунды
Для поиска: обращение по указателю
Marseil
2 / 2 / 0
Регистрация: 29.10.2012
Сообщений: 18
09.01.2014, 03:28  [ТС]     Недопонимание кода #3
Значит если обращаемся к указателю - используем "->", если к переменной "."? Я вас правильно понял?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
09.01.2014, 03:33     Недопонимание кода #4
не к, а по

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
struct A
{
    int x;
};
 
int main()
{
    A a; // создаем структурную переменную а
    A *b = &a; // создаем указатель на структурную переменную - b, он ссылается на a
    a.x = 2;
    std::cout << a.x  << std::endl; // обращение по значению
    std::cout << b->x << std::endl; // обращение по указателю
}
Добавлено через 1 минуту
По сути последнюю строку можно представить в виде
C++
1
std::cout << (*b).x << std::endl;
просто ввиду частого использования для повышения читаемости и краткости ввели дополнительное обозначение.
Marseil
2 / 2 / 0
Регистрация: 29.10.2012
Сообщений: 18
09.01.2014, 03:35  [ТС]     Недопонимание кода #5
Огромное вам спасибо за объяснение!
Yandex
Объявления
09.01.2014, 03:35     Недопонимание кода
Ответ Создать тему
Опции темы

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