С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Tamoren
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
#1

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

09.01.2012, 05:16. Просмотров 2856. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структуры, содержащие указатели на самих себя (C++):

Программа для деления чисел самих на себя - C++
Ну вивести на екран все 3 значные числа, которые делаться на каждую из своих цифер. #include <iostream> using namespace std; void...

Как из массива получить другой, где элементы первого массива перемножены на самих себя - C++
Как из массива получить другой, где элементы первого массива перемножены на самих себя?(Если можно то скиньте код)

Указатели на структуры - C++
type celltype = record elетеt: integer; next: ^celltype end; DICTIONARY = array of ^celltype; какой аналог этой записи...

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

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

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

6
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.01.2012, 05:20 #2
в случае с указателями как раз "рекурсии" не получается. размер указателя на любой тип всегда известен (32 бита для 32битных систем, 64 для 64 битных). Для этого даже определения типа не обязательно, достаточно объявления.
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,864
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
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
09.01.2012, 05:47 #5
похоже вы осваиваете теорию без практики. для осознания необходимости таких указателей, попробуйте реализовать двусвязный список в классическом варианте. или хотябы посмотрите как это делается.
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,864
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
Привет! Вот еще темы с ответами:

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

Указатели и структуры - C++
Здравствуйте. Подскажите, пожалуйста, почему не меня среда ругается. error C2440: =: невозможно преобразовать &quot;Book *&quot; в...

Структуры и указатели на структуры - C++
Так ли я сделал? #include &lt;iostream&gt; struct S { int i; }; void f1(S*s1,int k=0){ s1-&gt;i=k;};

Указатели и динамические структуры данных - C++
В данный момент занимаюсь изучением динамических структур данных и указателей, и вот вот возник вопрос, есть ли разница изучать эту тему в...


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

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

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