Как создать структуру, где будут поля с указателями на эту же структуру? - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <stdlib.h>
typedef
struct DoubleQueue
{
queue* ar;
queue* al;
int data;
} queue;
int main()
{
int x;
int n = 3;
queue b,e,al;
}1>------ Построение начато: проект: Queue, Конфигурация: Debug Win32 ------
1> Main.c
1>c:\users\life\documents\visual studio 2012\projects\praktika\praktika\main.c(7): error C2016: В языке C необходимо, чтобы в struct или union был по крайней мере один элемент
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(7): error C2061: синтаксическая ошибка: идентификатор "queue"
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(8): error C2143: синтаксическая ошибка: отсутствие "{" перед "*"
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(10): error C2059: синтаксическая ошибка: }
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(16): error C2065: queue: необъявленный идентификатор
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(16): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "b"
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(16): error C2065: b: необъявленный идентификатор
1>c:\users\life\documents\visual studio 2012\projects\Queue\Queue\main.c(16): error C2065: e: необъявленный идентификатор
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========Решение задачи: «Как создать структуру, где будут поля с указателями на эту же структуру?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
typedef struct DoubleQueue {
struct DoubleQueue* ar;
struct DoubleQueue* al;
int data;
} queue;
int main() {
int x;
int n = 3;
queue b, e, al;
return 0;
}
Объяснение кода листинга программы
- #include
— подключает файл стандартного ввода/вывода, что позволяет использовать функции для работы с консолью - #include
— подключает файл стандартной библиотеки, который содержит функции для работы с памятью - typedef struct DoubleQueue { — определяет новый тип данных
DoubleQueue, который будет использоваться для создания структур - *struct DoubleQueue ar;* — объявляет поле структуры
arтипа `struct DoubleQueue, которое будет содержать указатель на структуруDoubleQueue` - *struct DoubleQueue al;* — объявляет поле структуры
alтипа `struct DoubleQueue, которое будет содержать указатель на структуруDoubleQueue` - int data; — объявляет поле структуры
dataтипаint, которое будет содержать целочисленное значение - } queue; — завершает определение структуры
DoubleQueue - int main() { — определяет функцию
main, которая является точкой входа в программу - int x; — объявляет переменную
xтипаint - int n = 3; — объявляет переменную
nтипаintи инициализирует её значением 3 - queue b, e, al; — объявляет три переменные типа
queue—b,eиal - return 0; — завершает функцию
mainи указывает, что программа успешно завершилась