Чем заменить new на Си? - C (СИ)
Формулировка задачи:
есть строчки кода, как их преобразовать в Си код?
typedef struct CFind { int x, y, value; struct CFind *nextRight, *nextBelow, *nextTop, *nextLeft, *last; CFind(int _x, int _y, int _v): x(_x), y(_y), value(_v){} }CFind;
CFind *f = new CFind(0,0,1);
temp = new CFind(f->x - 1, f->y, f->value + 1);
Решение задачи: «Чем заменить new на Си?»
textual
Листинг программы
struct CFind { int x; int y; int value; struct Cfind* nextRight; struct Cfind* nextBelow; struct Cfind* nexTop; struct Cfind* nextLeft; struct Cfind* nextLast; }; struct CFind* CFind_new(int x, int y, int value) { struct CFind* allocatedItem = malloc(sizeof(*allocatedItem)); allocatedItem->x = x; allocatedItem->y = y; allocatedItem->value = value; allocatedItem->nextRight = NULL; allocatedItem->nextBelow = NULL; allocatedItem->nextTop = NULL; allocatedItem->nextLeft = NULL; allocatedItem->last = NULL; return allocatedItem; } // ... struct CFind* f = CFind_new(0, 0, 1); struct CFind* temp = CFind_new(f->x - 1, f->y, f->value + 1); // ...
Объяснение кода листинга программы
В данном коде определена структура данных под названием CFind, которая имеет поля: x, y, value, а также указатели на другие элементы структуры CFind: nextRight, nextBelow, nextTop, nextLeft, last. Также опреденена функция CFind_new, которая принимает три аргумента типа int (x, y, value) и возвращает указатель на новый экземпляр структуры CFind, заполненный значениями аргументов. В функции CFind_new выполняются следующие действия:
- Выделяется память под новый экземпляр структуры CFind с помощью функции malloc.
- Задаются значения полей x, y, value нового экземпляра структуры.
- Устанавливаются значения указателей на другие элементы структуры в значение NULL.
- Возвращается указатель на новый экземпляр структуры. В основной программе создается экземпляр структуры CFind с помощью функции CFind_new и инициализируется значениями аргументов (0, 0, 1). Затем создается еще один экземпляр структуры CFind с помощью функции CFind_new, передавая в качестве аргументов значение поля x первого экземпляра, значение поля y первого экземпляра и сумму значения поля value первого экземпляра и единицы. В данном коде не было найдено ни одной ошибки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д