void func(char *** results, DWORD * resultsCount)
{
... some code
*results = populatedArrayOfStrings;
*resultsCount = calculatedResultsCount;
}
char ** results;
DWORD resultsCount;
func(&results, &resultsCount);
по ссылке указатель на указатель на char
#include <iostream>
#include <cstring>
auto doit(char** &ptr)
{
ptr = new char*[2];
ptr[0] = new char[2];
ptr[1] = new char[2];
memcpy(ptr[0], "Y\0", 2);
memcpy(ptr[1], "N\0", 2);
return 2;
}
int main()
{
char** ptr = nullptr;
int sz = doit(ptr);
for(int i = 0; i < sz; ++i)
{
std::cout << ptr[i] << "\n";
}
for(int i = 0; i < sz; ++i)
{
delete ptr[i];
}
delete ptr;
}
И я осознанно не хочу использовать векторы, так как хочу сделать все на максимально низком уровне.
void func(char * in_1, char * in_2, DWORD in_3, char *** out_1, DWORD * out_2)
{
....
}
// И чтобы можно было вызвать функцию вот так (допустим, что входные параметры определены где-то выше):
func(in_1, in_2, in_3, nullptr, nullptr);
char** &ptr
не позволит передать nullptr char ***
я не вижу