Чем заменить 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 выполняются следующие действия:

  1. Выделяется память под новый экземпляр структуры CFind с помощью функции malloc.
  2. Задаются значения полей x, y, value нового экземпляра структуры.
  3. Устанавливаются значения указателей на другие элементы структуры в значение NULL.
  4. Возвращается указатель на новый экземпляр структуры. В основной программе создается экземпляр структуры CFind с помощью функции CFind_new и инициализируется значениями аргументов (0, 0, 1). Затем создается еще один экземпляр структуры CFind с помощью функции CFind_new, передавая в качестве аргументов значение поля x первого экземпляра, значение поля y первого экземпляра и сумму значения поля value первого экземпляра и единицы. В данном коде не было найдено ни одной ошибки.

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


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

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

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