deklaracja dynamiczna w C odpowiednik

0

Powiedzmy mam zapisany kod w c++:

USS_PTR p = new USS;

W c powinno to wyglądać?

USS_PTR p = (USS_PTR) malloc (sizeof(USS));

Dobrze to rozumiem ?

2

Tak, o ile USS nie ma konstruktora.

1

no i w C nie ma obowiązku rzutowania przy malloc, czyli wystarczy

USS_PTR p = malloc (sizeof(USS));
0

cóż struktura wygląda tak...

typedef struct slownik
{
    struct slownik *t[SIZE];
} USS, *USS_PTR;

Dzięki za informację ... nie wiedziałem iż rzutowanie w C nie jest potrzebne...

Także coś wyczytałem iż niezbyt powinno się korzystać z dyrektyw preprocesora

#define SIZE 29

Jest jakaś inna możliwość zastąpienia ?

1

W C++ to się odradza użycie #define, zaś w C to jedyna metoda.

0

tak jak napisal @_13th_Dragon jesli nie ma konstruktora to jest to samo, ale z tego co widze to w strukturze masz wskaznik ktory prawdopodobnie powinien byc zainicjalizowany jakims blokiem pamieci. Wg. mnie najbardziej wiernym odpowiednikiem jest cos takiego:

typedef struct slownik
{
    struct slownik *t[SIZE];
} USS, *USS_PTR;

USS_PTR create_USS()
{
  USS_PTR uss = malloc(sizeof(USS));
  /* tutaj robisz to co bys robil w konstruktorze */
  return uss;
}

void free_USS(USS_PTR uss)
{
  /* tutaj robisz to co bys robil w destruktorze */
  free(uss);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1