Wskaźniki jako argumenty funkcji w C

Gdybym miał ten kod, na przykład:

int num = 5;
int *ptr = #

Jaka jest różnica między następującymi dwiema funkcjami?

void func(int **foo);
void func(int *foo); 

Gdzie nazywam tę funkcję:

func(&ptr); 

Zdaję sobie sprawę, że pierwszy z dwóch pobiera wskaźnik do wskaźnika jako parametr, podczas gdy drugi przyjmuje tylko wskaźnik.

Jeśli przejdęfunc(&ptr), Skutecznie przekazuję wskaźnik. Jaka to różnica, że ​​wskaźnik wskazuje na inny wskaźnik?

Wierzę, że ta ostatnia da ostrzeżenie o niezgodności, ale wydaje się, że szczegóły nie mają znaczenia, dopóki wiesz, co robisz. Wydaje się, że być może ze względu na czytelność i zrozumienie tego pierwszego jest lepszą opcją (wskaźnik dwugwiazdkowy), ale z logicznego punktu widzenia, jaka jest różnica?

questionAnswers(6)

yourAnswerToTheQuestion