Мусор при инициализации структуры - 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;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки файлов ввода-вывода
  2. Объявление структуры Point с полями x и y типа double
  3. Объявление структуры Circle с полем pos типа Point и полем r типа double
  4. Инициализация структуры Circle с помощью фигурных скобок, значения по умолчанию для поля r равны 0.
  5. Вывод значений полей структуры Circle на экран с помощью функции printf
  6. Возврат значения 0 в конце функции main

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы