C++ 如何使用指向指针的指针

C++ 如何使用指向指针的指针,c++,c,pointers,C++,C,Pointers,指向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); pr

指向
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);
} 
#包括
char*foo(char**foo)
{
printf(“b:%s\n”,foo);
*foo=“世界”;
printf(“c%s\n”,foo);
}
main()
{
静态字符*test=“Hello”;
foo&测试;
printf(“a:%s\n”,测试);
} 
它编译得很好,但b和c都会损坏,a永远不会更改。
请帮帮我,我做错了什么?

指向指针的指针是多重间接寻址的一种形式,或者是指针链。通常,指针包含变量的地址。当我们定义指向指针的指针时,第一个指针包含第二个指针的地址,该地址指向包含实际值的位置


更改为
printf(“b:%s\n”,*foo)<代码>printf(“c%s\n”,*foo)
返回*foo如果“编译良好”,则说明您使用了错误的编译器、错误的设置或忽略了编译器给您的警告。gcc给了我三个警告:警告:格式“%s”要求参数类型为“char*”,但参数2的类型为“char**”[-Wformat=]printf(“b:%s\n”,foo);警告:格式“%s”要求参数类型为“char*”,但参数2的类型为“char**”[-Wformat=]printf(“c:%s\n”,foo);警告:函数中没有返回语句返回非void[-Wreturn type]请尝试使用-Wall选项编译。谢谢,我想这是我的问题。我也明白指向指针的指针可以用来修改指针,所以现在就可以了!#包括char*foo(char**foo){printf(“b:%s\n”,“foo”);*foo=“World”;printf(“c%s\n”,“foo”);return*foo;}int main(){static char*test=“Hello”;foo(&test);printf(“a:%s\n”,test);}