Zamiana kodu z C na C++

0

Mam problem przy zamianie kodu z C++ na C

fragment kodu z C++:

 

struct dlist
{
  dlist *next,*prev;
  int v;
};



bool DFSaddCycle(int v, int w, dlist * & p)
{
  int u;

....
}

A niedziałający fragment kodu w C:

 
struct dlist
{
	struct dlist *next, *prev;
	int v;
};


bool DFSaddCycle(int v, int w, struct dlist * & p)
{
	int u;
...
}

Przy próbie kompilacji pokazują się:

error: expected ';', ',' or ')' before '&' token|

2

W C nie ma referencji.

0

Nie zabardzo wiem w ogóle co ma znaczyć (dlist * & p) -> referencja do wskaźnika? jaki to ma sens?.

Tak jak powiedział kolega w C nie ma referencji w ogóle. tak więc typ dlist oraz (dlist*)& są niepoprawne.

1

Jak napisano wczeniej nie ma w C *&, zamiast tego użyj ** z odpowiednimi dlaszymi korektami wywołań.

0

Referencję do wskaźnika w C++ albo wskaźnik na wskaźnik w C stosuje się dlatego, że tak naprawdę każdy rodzaj obiektu przekazywany jest w tych językach przez wartość, nawet wskaźniki. Jeżeli zastosujesz jedną gwiazdkę to przekażesz do funkcji wskaźnik przez wartość, a więc przekażesz tam tak naprawdę jego kopię. Jest to podstawowy błąd jaki popełniają ludzie uczący się wszelkiego rodzaju list czy drzew.

Tak więc obiekty, które przechowują adresy zmiennych są przekazywane domyślnie przez wartość dlatego wskaźnik do takich obiektów jak np korzeń listy należy przekazać przez wskaźnik jeżeli chcemy coś tam dodawać np..

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