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

Указатели и структуры - C++

Восстановить пароль Регистрация
 
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 22:53     Указатели и структуры #1
Здравия желаю. Подскажите пожалуйста каким образом осуществляется доступ к полю структуры, если оно является указателем?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
21.05.2011, 22:55     Указатели и структуры #2
Через оператор "стрелочка"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
struct A{
  int i;
  char c;
};
 
int main(){
  A *p;
  p = new A;
  p->c = 'a';
  p->i = 1;
  std::cout << p->c << ' ' << p->i;
  delete p;
  return 0;
}
yekka
384 / 148 / 8
Регистрация: 12.05.2011
Сообщений: 450
21.05.2011, 22:56     Указатели и структуры #3
C++
1
2
3
4
5
6
7
8
struct A {
  int Field1;
  int Field2;
};
...
A * p;
p->Field1 = 1;
p->Field2 = 2;
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 23:11  [ТС]     Указатели и структуры #4
Не экземпляр структуры, а поле (являющееся указателем):
C++
1
2
3
4
5
struct
{
    int a;
    float *b;
} c;
Как получить доступ к области памяти, адрес которой содержит указатель b ?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
21.05.2011, 23:22     Указатели и структуры #5
Так ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
struct A{
  int *i;
};
 
int main(){
  A a;
  int j = 4;
  a.i = &j;
  std::cout << *(a.i);
  return 0;
}
STGE
 Аватар для STGE
770 / 576 / 91
Регистрация: 17.06.2009
Сообщений: 1,188
21.05.2011, 23:55  [ТС]     Указатели и структуры #6
asics, а ещё есть варианты?

Добавлено через 18 минут
asics, почему вы выполняете присваивание:
C++
1
a.i = &j;
Разве его нельзя выполнить след. образом:
C++
1
*(a.i) = j;
?
Если да, то по каким причинам ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 00:10     Указатели и структуры
Еще ссылки по теме:

C++ Указатели на структуры
C++ Указатели и структуры
C++ Структуры и указатели на структуры

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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
22.05.2011, 00:10     Указатели и структуры #7
Цитата Сообщение от STGE Посмотреть сообщение
Если да, то по каким причинам ?
C++
1
*(a.i)
- вы разыменовуете неизвесную область памяти(мусор), это черевато run-time ошибкой.
Yandex
Объявления
22.05.2011, 00:10     Указатели и структуры
Ответ Создать тему
Опции темы

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