我试图理解为什么下面的代码不起作用。我意识到我试图将指针引用推送到函数并用其他新函数更改该地址的值。所以第一个指针指向新的字符串。问题是为什么这只能用双指针参数?
__str__
答案 0 :(得分:1)
如果您只是传递指针,则只更改该指针中的数据。要更改数据的位置,您必须使用指向指针的指针。
如果使用-Wall
标志进行编译,则会发现此错误。始终启用编译器警告。
在您的情况下,您需要声明您的函数,以便参数是指向指针的指针:
int change_ptr(char ** str_ptr)
{
*str_ptr = new_str;
}