Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
subzirro
0 / 0 / 1
Регистрация: 08.01.2013
Сообщений: 8
1

Разобрать примеры typedef в структурах, ссылающихся друг на друга

13.01.2013, 10:02. Просмотров 871. Ответов 3
Метки нет (Все метки)

Здравствуйте!

Помогите, пожалуйста, разобраться со структурами.

Чем отличаются следующие фрагменты, и почему первый не компилируется, а два других компилируются.

C
1
2
3
4
5
6
7
8
9
typedef struct
{
    a2_t* a2;
} a1_t;
 
typedef struct
{
    a1_t* a1;
} a2_t;
C
1
2
3
4
5
6
7
8
9
struct a3_t
{
    struct a4_t* a4;
};
 
struct a4_t
{
    struct a3_t* a3;
};
C
1
2
3
4
5
6
7
8
9
10
11
12
typedef struct _a5_t a5_t;
typedef struct _a6_t a6_t;
 
struct _a5_t
{
    a6_t* a6;
};
 
struct _a6_t
{
    a5_t* a5;
};
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 10:02
Ответы с готовыми решениями:

Сортировка вставками последовательности элементов, отстоящих друг от друга
Можете подробно обьяснить программу??? void shellSort(int a, int size); int...

Напечатать отдельно друг от друга цифры 4х значного числа.
Помогите пожалуйста... на С ... срочно нужно.. спасибо Написать программу,...

Шахматы: определить, бьют ли ладья и король друг друга
Заданы координаты короля и ладьи на шахматной доске. Определить бьют ли фигуры...

Посчитать две изменяющиеся функции которые умножаются друг на друга
Здраствуйте. Мне дали задание написать программу которая вычисляет значение...

Как правильно объявить две структуры с указателями друг на друга
В одном файле определены две структуры. typedef struct Tdata1 { int a; ...

3
Evg
Эксперт CАвтор FAQ
19634 / 7326 / 551
Регистрация: 30.03.2009
Сообщений: 20,488
Записей в блоге: 30
13.01.2013, 13:00 2
В первом фрагменте при описании структуры у тебя используется тип a2_t, который в точке описания ещё не определён и компилятор не знает, что туда подставлять. Во втором используется "struct a4_t", которая ещё не определена. Но неопределённую структуру можно использовать при объявлении указателя

Указатель на структуру - что напечатает программа
странное употребления к-го слова typedef
0
subzirro
0 / 0 / 1
Регистрация: 08.01.2013
Сообщений: 8
13.01.2013, 22:10  [ТС] 3
Но современные компиляторы вроде многопроходные, разве они не могут дополнить информацию о типе на следующим проходе?

Поясните, пожалуйста

C
1
2
3
4
5
6
7
8
9
10
typedef struct
{
    int x;
} a1_t; // Создаём псевдоним типа с именем a1_t и описанием структуры
 
int main()
{
    struct a1_t* a; // Создаём указатель на неописанную структуру struct a1_t
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
typedef struct
{
    int x;
} a1_t; // Создаём тип с именем a1_t и struct a1_t
 
int main()
{
    struct a1_t* a; // Что происходит тут?
    return 0;
}
Для кода на C++, в строке 8
0
Evg
Эксперт CАвтор FAQ
19634 / 7326 / 551
Регистрация: 30.03.2009
Сообщений: 20,488
Записей в блоге: 30
13.01.2013, 23:15 4
Цитата Сообщение от subzirro Посмотреть сообщение
Но современные компиляторы вроде многопроходные
Многопроходность компиляторов вообще не при чём. Компиляторы работают так, как написано в стандарте Си

Цитата Сообщение от subzirro Посмотреть сообщение
Для кода на C++, в строке 8
В строке 4 комментарий неверный. Там только тип с именем a1_t и никакого типа "struct a1_t". По поводу строки 8 - всё же было написано в ссылке из поста #2: создаётся незаполненная структура "struct a1_t" и указатель на неё
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2013, 23:15

Нужно чтобы две структуры имели в своем составе указатели друг на друга
Нужно чтобы две структуры имели в своем составе указатели друг на друга. Как-то...

Реализавать функцию поиска двух точек в массиве наиболее удаленных друг от друга
Реализавать функцию поиска двух точек в массиве наиболее удаленных друг от...

Без использования typedef все работает. При добавлении typedef — более 100 ошибок
Есть программа, с описанием структуры и функций, работающими с ней. Без...


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

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

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