Мусор при инициализации структуры - C (СИ)
Формулировка задачи:
Доброго времени суток. Я отказываюсь понимать, какого черта структура не инициализируется. Код:
Вместо значений - мусор! Что это значит вообще?
typedef struct Circle
{
double R; //Радиус
Point O; //Центр
};Arr = (Circle *)malloc(N * sizeof(Circle));
for (int i = 0; i < N; i++)
{
printf("Круг %d: ", i + 1);
printf("R = ");
scanf_s("%f", &Arr[i].R);
printf("x = ");
scanf_s("%f", &Arr[i].O.x);
printf("y = ");
scanf_s("%f", &Arr[i].O.y);
}Решение задачи: «Мусор при инициализации структуры»
textual
Листинг программы
#include <stdio.h>
typedef struct Point { double x; double y; };
typedef struct Circle { Point pos; double r; };
int main() {
Circle kugel = { { 10., 20. }, 35 };
printf("X: %.1f; Y: %.1f; R: %.1f\n", kugel.pos.x, kugel.pos.y, kugel.r);
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки файлов ввода-вывода
- Объявление структуры Point с полями x и y типа double
- Объявление структуры Circle с полем pos типа Point и полем r типа double
- Инициализация структуры Circle с помощью фигурных скобок, значения по умолчанию для поля r равны 0.
- Вывод значений полей структуры Circle на экран с помощью функции printf
- Возврат значения 0 в конце функции main