2 / 2 / 1
Регистрация: 29.10.2012
Сообщений: 18
1

Недопонимание кода

09.01.2014, 03:24. Показов 407. Ответов 4
Метки нет (Все метки)

Я разбираю некоторый код С++ (Сразу скажу, что учил с++ самостоятельно, не супер профи) и там есть некоторые строчки, которые я не до конца понимаю. (Код из CryEngine3).

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

Благодарю всем кто поможет и по людски объяснит.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2014, 03:24
Ответы с готовыми решениями:

Недопонимание указателей
Уже прошёл их по книжке давно, но они частенько встречаются, и я никак не могу понять некоторые...

Будоражащее недопонимание цикла
#include <iostream> #include <string.h> using namespace std; class Data { public: ...

Недопонимание с switch и выводом default
Задание: сделать так что бы при вводе целого числа (от 1 до 7 которые соответствует дням недели, 1-...

Недопонимание кода
Всем привет... Туплю жестко... Имеется код, ближе к концу в static void Send условия string...

4
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
09.01.2014, 03:27 2
-> это фактически (* ).
Обращение через . по значению, через -> по указателю.
То есть m_sharedparams является указателем, сначала идет его разыменование и потом обращение к свойству. Если бы он был обычной переменной, то то же самое проделывалось бы через точку.

Добавлено через 34 секунды
Для поиска: обращение по указателю
1
2 / 2 / 1
Регистрация: 29.10.2012
Сообщений: 18
09.01.2014, 03:28  [ТС] 3
Значит если обращаемся к указателю - используем "->", если к переменной "."? Я вас правильно понял?
0
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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;
просто ввиду частого использования для повышения читаемости и краткости ввели дополнительное обозначение.
1
2 / 2 / 1
Регистрация: 29.10.2012
Сообщений: 18
09.01.2014, 03:35  [ТС] 5
Огромное вам спасибо за объяснение!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2014, 03:35
Помогаю со студенческими работами здесь

Недопонимание, как работает очередность вызова кусков кода
Здравствуйте! Осваиваю JS и столкнулся с явным недопониманием как работает очередность вызова...

Недопонимание с INNER JOIN
Здравствуйте, ситуация такова... На запрос: SELECT ., ., ., . * . / . AS Начислено...

Недопонимание QByteArray
У меня происходит соединение по UDP, всё происходит на моём компьютере. Есть программа, которая...

Недопонимание с фреймом
Установил ssl сертификат на сайте, и сейчас у него https протокол, на странице стоит iframe с...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru