как использовать указатель на указатель [дубликата]

0

Каково использование указателя на указатель на 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 становятся поврежденными и никогда не меняются. пожалуйста, помогите мне, что я делаю неправильно?

  • 1
    изменить на printf("b : %s \n ", *foo); ... printf(" c %s \n ", *foo); и return *foo;
  • 0
    Если это «хорошо компилируется», значит, вы используете неправильный компилятор, неправильные настройки или игнорируете предупреждения, которые дает вам компилятор. GCC дал мне три предупреждения:
Показать ещё 3 комментария
Теги:
pointers

1 ответ

0
Лучший ответ

Указатель на указатель представляет собой форму множественной косвенности или цепочки указателей. Обычно указатель содержит адрес переменной. Когда мы определяем указатель на указатель, первый указатель содержит адрес второго указателя, который указывает на местоположение, содержащее фактическое значение.

http://www.tutorialspoint.com/cprogramming/c_pointer_to_pointer.htm

Ещё вопросы

Сообщество Overcoder
Наверх
Меню