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?