Как выделить память для массива структур? - C (СИ)
Формулировка задачи:
выделить пямять для такой структуры на n элементов
typedef struct coordinates {
float x;
float y;
float z;}line_segment;Решение задачи: «Как выделить память для массива структур?»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct{
float x;
float y;
float z;}coordinates;
void main ()
{
coordinates *line;
int n, kol;
setlocale(LC_ALL,".1251");
scanf("%d", &n);
line = ((coordinates *)malloc(n*sizeof(coordinates)));
for(kol=0; kol <n; kol++)
scanf("%d%d%d", &line[kol].x,&line[kol].y,&line[kol].z);
for(kol=0; kol <n; kol++)
printf("%d %d %d", line[kol].x,line[kol].y,line[kol].z);
scanf("%d", &n);
}
Объяснение кода листинга программы
Этот код на языке C занимается выделением памяти для массива структур и последующим заполнением этого массива. Вот список действий, которые он выполняет:
- Включает необходимые заголовочные файлы.
- Определяет структуру с именем
coordinates, которая содержит три поля типа float. - Устанавливает русскоязычную локаль с помощью функции setlocale.
- Запрашивает у пользователя количество точек, для которых нужно выделить память (переменная
n). - Выделяет память для массива структур с помощью функции malloc. Значение
nиспользуется как аргумент для оператора sizeof, чтобы определить размер памяти, необходимый для массива структур. - Использует цикл for для чтения координат каждой точки из стандартного ввода и сохранения их в соответствующей структуре.
- Использует еще один цикл for для вывода координат каждой точки на стандартный вывод.
- После вывода всех координат, программа снова запрашивает у пользователя количество точек и прекращает выполнение.