Каково использование указателя на указатель на C
и когда его использовать? Поскольку я привык видеть что-то подобное чаще всего const char *foo(char **foo);
но когда я делаю что-то вроде этого:
#include <stdio.h>
char *foo(char **foo)
{
printf("b : %s \n ", foo);
*foo = "World";
printf(" c %s \n ", foo);
}
main()
{
static char *test = "Hello";
foo(&test);
printf("a : %s \n ", test);
}
он компилируется, но оба b и c становятся поврежденными и никогда не меняются. пожалуйста, помогите мне, что я делаю неправильно?
Указатель на указатель представляет собой форму множественной косвенности или цепочки указателей. Обычно указатель содержит адрес переменной. Когда мы определяем указатель на указатель, первый указатель содержит адрес второго указателя, который указывает на местоположение, содержащее фактическое значение.
http://www.tutorialspoint.com/cprogramming/c_pointer_to_pointer.htm
printf("b : %s \n ", *foo);
...printf(" c %s \n ", *foo);
иreturn *foo;