Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Tamoren
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
1

Структуры, содержащие указатели на самих себя

09.01.2012, 05:16. Просмотров 3338. Ответов 6
Метки нет (Все метки)

Как вообще возможно существование структур, содержащих указатели на самих себя?
C++
1
2
3
4
5
struct mystruct{
   int a;
   char ch;
   mystruct* sptr; // Указатель на объекты типа mystruct
};
Например, если нам нужно вычислить объем, занимаемый mystruct в памяти, получается рекурсия!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2012, 05:16
Ответы с готовыми решениями:

Программа для деления чисел самих на себя
Ну вивести на екран все 3 значные числа, которые делаться на каждую из своих...

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

Указатели и структуры
Здравствуйте. Подскажите, пожалуйста, почему не меня среда ругается. error...

Указатели и структуры
Здравия желаю. Подскажите пожалуйста каким образом осуществляется доступ к полю...

Структуры и указатели
Привет форумчане, столкнулся вот с такой вот задачкой на структуры: 1. Описать...

6
DU
1487 / 1133 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
09.01.2012, 05:20 2
в случае с указателями как раз "рекурсии" не получается. размер указателя на любой тип всегда известен (32 бита для 32битных систем, 64 для 64 битных). Для этого даже определения типа не обязательно, достаточно объявления.
0
easybudda
Модератор
Эксперт CЭксперт С++
10119 / 6026 / 1511
Регистрация: 25.07.2009
Сообщений: 11,418
09.01.2012, 05:27 3
Цитата Сообщение от Tamoren Посмотреть сообщение
Например, если нам нужно вычислить объем, занимаемый mystruct в памяти, получается рекурсия!
С чего бы вдруг? Указатель - фактически беззнаковое целое длинной в 4 байта (32-битные системы) или 8 байт (64-битные). Доделать пример, скомпилировать и посмотреть - не?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
struct mystruct{
   int a;
   char ch;
   struct mystruct* sptr; // Указатель на объекты типа mystruct
};
 
int main(void){
    printf("%d\n", sizeof(struct mystruct));
    
    return 0;
}
Код
~/cpp/other $ gcc -o sizeofstruct sizeofstruct.c 
~/cpp/other $ ./sizeofstruct 
12
А вот так
C
1
2
3
4
5
struct mystruct{
   int a;
   char ch;
   struct mystruct s;
};
действительно нельзя делать...
0
Tamoren
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
09.01.2012, 05:42  [ТС] 4
Ладно, с адресом плохой пример получился. Я хотел узнать как они будут в памяти расположены.
А если к примеру объявить struct mystruct obj; как будет осуществляться доступ ко всем элементам (включая те, что расположены по указателю)? И зачем вообще нужны ТАКИЕ указатели?
0
DU
1487 / 1133 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
09.01.2012, 05:47 5
похоже вы осваиваете теорию без практики. для осознания необходимости таких указателей, попробуйте реализовать двусвязный список в классическом варианте. или хотябы посмотрите как это делается.
0
easybudda
Модератор
Эксперт CЭксперт С++
10119 / 6026 / 1511
Регистрация: 25.07.2009
Сообщений: 11,418
09.01.2012, 05:48 6
Цитата Сообщение от Tamoren Посмотреть сообщение
И зачем вообще нужны ТАКИЕ указатели?
Связанные списки делать... пример
0
Tamoren
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
09.01.2012, 06:00  [ТС] 7
Цитата Сообщение от DU Посмотреть сообщение
похоже вы осваиваете теорию без практики
Так в теории было только про то, что они существуют и отсылка к связаным спискам. Открыл в инете первую попавшуюся программу - ничего не понял. Решил спросить...
Ладно, буду искать инфу по
Цитата Сообщение от DU Посмотреть сообщение
двусвязному списоку в классическом варианте
0
09.01.2012, 06:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2012, 06:00

Указатели на структуры
Подскажите в чем ошибка...Дело в том когда я в вожу в каждое поле по 1 значению...

Указатели на структуры
type celltype = record elетеt: integer; next: ^celltype end; ...

Структуры и указатели
Задался парой вопросов. Возможно, уже где-то задавались, поэтому прошу прощения...


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

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

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