将char指针传递给另一个函数:空值.C++

Mar*_*ska 1 c++ pointers

我有以下非常简单的程序.

int modify(char * v){
  v = "123" ;

  return 0;
}

int main (int argc, char** argv){
char *test = new char[10];
  modify(test);
  std::cout << test;
  return 0;

}
Run Code Online (Sandbox Code Playgroud)

我知道我可以打印出"123",但我故意以这种方式编写它来了解指针是如何工作的.但是,不打印"123".我应该如何正确传递指针?

Som*_*ude 7

你必须记住,在C++中,参数默认是按值传递,这意味着在函数中你有副本.并且修改副本不会改变原始版本.

如果要将指针更改为指向其他内容,则需要通过引用传递它.但是,在这种情况下,它会导致其他问题,因为然后松开原始指针.

因此,解决方案是使用std::string通过引用传递,或者使用strcpy顶部副本到目标内存区域(但是如果使用strcpy,则必须注意不要超出分配的内存).