Если бы у меня был этот код, например:
int num = 5;
int *ptr = #
В чем разница между следующими двумя функциями?
void func(int **foo);
void func(int *foo);
Где я вызываю функцию:
func(&ptr);
Я понимаю, что первый из двух берет указатель на указатель в качестве параметра, а второй принимает только указатель.
Если я перехожу в func(&ptr)
, я эффективно передаю указатель. Какая разница, указывает ли указатель на другой указатель?
Я считаю, что последнее даст предупреждение о несовместимости, но кажется, что детали не имеют значения, пока вы знаете, что делаете. Кажется, что, возможно, ради удобочитаемости и понимания первый вариант является лучшим вариантом (2-звездный указатель), но с логической точки зрения, в чем разница?