在方法内部初始化 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);
我想将一个 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);