在方法内部初始化 char 指针

Initializing char pointer inside method

我想将一个 char 指针作为参数传递给这样的函数:

void foo(char* array_of_c_str[], const int size_of_array, char* result_ptr)
{
     // my logic

     result_ptr = a[n];
}

然后这样调用:

char* result_pointer = NULL;
foo(array_of_c_strings, 5, result_pointer);
printf("%s", result_pointer); // here result_pointer is always null

我想在函数内部初始化指向 char 的指针,调试时一切正常,但是当离开函数作用域时,这个指针再次变为 null,即使它离开函数作用域,如何保持它的初始化?

您不能更改传递给函数的值。

result_ptr 更改为 char**,然后将目标指针的 地址传递给函数:

// Now a double pointer ---------------------------------------v
void foo(char* array_of_c_str[], const int size_of_array, char** result_ptr)
{
     // my logic

     // Note the addition of the * at the front - we want to modify
     // the char* whose address was passed to us.
     *result_ptr = a[n];
}

然后这样调用:

char* result_pointer = NULL;

// Pass the address of your pointer:
//                  -------v
foo(array_of_c_strings, 5, &result_pointer);
printf("%s", result_pointer);