我正在尝试调用一个以char**为参数的函数。它的作用是填充一个字符串数组(即char*数组)。我知道字符串的最大长度,并且可以将最大数量作为另一个参数传递,所以我希望像这样进行堆栈分配:
fill_my_strings(char** arr_str, int max_str); // function prototype
char fill_these[max_strings][max_chars_per_string]; // allocating chars
fill_my_strings(fill_these, max_strings); // please fill them!
当然,我得到了“无法将char [max_strings] [max_chars_per_string]转换为char **”的错误。
我知道这是我对数组和指针之间差异理解的微妙(或不太微妙)问题。我只是不确定为什么不能将该内存块传递给需要char **的某些内容,并让它填充我的堆栈分配字符。请问有人能否解释一下这是否可能,如果不可能,为什么不可能?
调用像这样的函数是否可能而不调用malloc / new?
fill_my_strings
函数需要一个指向数组的指针数组作为参数。因此,您需要提供这样的参数。您可以声明一个std::vector<char*> v
,使用循环将指针(每个指针都指向矩阵的相关部分)添加到向量中,然后传递&v[0]
。祝好运! - Cheers and hth. - Alf