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

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

Войти
Регистрация
Восстановить пароль
 
denys_l
52 / 52 / 4
Регистрация: 26.09.2011
Сообщений: 186
#1

Адреса элементов структуры - C++

17.04.2012, 15:10. Просмотров 403. Ответов 3
Метки нет (Все метки)

Помогите вывести адреса элементов структуры:

Код экспериментальный, я в нем пишу все подряд, поэтому что-то может показаться странным, не обращайте внимания.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
 
using namespace std;
 
struct Day
{
    char x;
    int y;
} today, secday;
 
Day show(Day tmp)
{
    cout << tmp.x << endl;
    cout << tmp.y << endl;
    return tmp;
}
 
int main()
{
    today.x = 'W';
    today.y = 20;
 
    struct Day *p = &today;
    secday = *p;
    show(secday);
 
    cout << "Rabota s ykazatelem na stryktyry: \n";
    cout << "&secday:\t" << &secday << endl;
    cout << "&secday.x:\t " << &secday.x << endl;
    cout << "&secday.y:\t " << &secday.y << endl;
 
 
    return 0;
}
Собственно интересует вот этот момент
C++
1
2
3
    cout << "&secday:\t" << &secday << endl;
    cout << "&secday.x:\t " << &secday.x << endl;
    cout << "&secday.y:\t " << &secday.y << endl;
Почему в первом и третьем случае выводит адреса, а во втором выводит символ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2012, 15:10     Адреса элементов структуры
Посмотрите здесь:

Возвращение адреса на элемент структуры - C++
Здравствуйте. У меня в классе есть структура. Может ли метод класса возвращать указатель на элемент структуры? Если да, то как?

Объявить массив не более чем 15 элементов. Вывести обратные по модулю величины и проверить изменились ли адреса элементов этих двух массивов. - C++
Объявить массив не более чем 15 элементов. Вывести обратные по модулю величины и проверить изменились ли адреса элементов этих двух...

Адреса элементов массивов - C++
Добрый вечер. Никак не могу понять зависимость типа переменной массивов и вывода адресов. Пример: #include &lt;iostream&gt; using...

Найти адреса элементов массива - C++
\\\

Определить адреса и значения элементов массива - C++
Элементы массива определяются формулой X0=X1=1; Xk-2 + 2^1-k*Xk-1, k=2,3,...10 Требуется определить адреса и значения элементов этого...

Вывести значения элементов массива и их адреса в памяти - C++
Поставьте комментарии рядом с каждой строчкой :) Задача:составить программу в которой случайным образом определен массив и два...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
17.04.2012, 15:24     Адреса элементов структуры #2
Дело даже не в структуре:

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    char x = 'a';
    std::cout << &x;
 
    return 0;
}
Не знаю, насколько это грамотное решение, попробуй: std::cout << (void*)&x;
denys_l
52 / 52 / 4
Регистрация: 26.09.2011
Сообщений: 186
17.04.2012, 15:31  [ТС]     Адреса элементов структуры #3
Цитата Сообщение от Schizorb Посмотреть сообщение
Дело даже не в структуре:

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main()
{
    char x = 'a';
    std::cout << &x;
 
    return 0;
}
Не знаю, насколько это грамотное решение, попробуй: std::cout << (void*)&x;

хммм...
Действительно получилось. Написал вот так
C++
1
cout << "&secday.x:\t " << (void *)&secday.x << endl;
и теперь выводит. Правда почему так не пойму...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2012, 15:35     Адреса элементов структуры
Еще ссылки по теме:

При работе с вектором изменяются адреса элементов - C++
Здравствуйте. В соответствии с правилами создаю новую тему, хотя вопрос имеет отношение к другой проблеме в этом топике. Ситуация...

Программа выводит на экран адреса вместо элементов матрицы - C++
Мне надо написать программу выводящую на экран квадратную матрицу. Ее размер полей ввожу с клавиатуры. Заполнить необходимо рандомными...

Вывести адреса первого и последнего элементов каждой строки. - C++
Во первых я даже не знаю как из массива в 100 элементов сделать 5*25=125 или тупо дозаполнить любыми числами? Сделать надо с помощью...

Вывести адреса первого и последнего элементов каждой строки массива. - C++
Из данного одномерного сформировать двумерный массив . Вывести адреса первого и последнего элементов каждой строки. 16, ...

Указатели: определить число отрицательных элементов в массиве и вывести их адреса - C++
Привет всем, я хотел бы узнать как решается данная задачка: Написать программу, определяющую число отрицательных элементов в массиве и...

Сортировка элементов структуры - C++
Цель программы: Считать и отсортировать информацию о студентах в группе. Сортировка просходит по номеру зачетки. Код: #include...


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

Или воспользуйтесь поиском по форуму:
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
17.04.2012, 15:35     Адреса элементов структуры #4
Цитата Сообщение от denys_l Посмотреть сообщение
Правда почему так не пойму...
Если бы я сам точно знал, то непременно объяснил Наверное, как-то связано с особенностями вывода типа char. Например,
C++
1
2
char * text = "qwerty";
std::cout << text;
тоже не напечатает адрес, хотя text - указатель, и в случае другого типа вывелся бы адрес первого элемента.
Yandex
Объявления
17.04.2012, 15:35     Адреса элементов структуры
Ответ Создать тему
Опции темы

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