如何将一个字符指针数组作为void*传递,然后转换回字符指针数组?

Dou*_*ith 3 c arrays pointers void void-pointers

我传递一个字符指针数组sqlite3_exec,它接受1个参数并将其显示为a void *,但后来我想将它作为回调函数中的字符指针数组来访问.

char *output_params[] = {"one", "two"};
result = sqlite3_exec(db, sql_statement, callback, output_params, &zErrMsg);

....

static int callback(void *param, int argc, char **argv, char **azColName) {
    // How do I access my character array?
    char *output_params[2] = (char **)param;
}
Run Code Online (Sandbox Code Playgroud)

我通过后如何访问它?

R S*_*ahu 5

这对我有用:

int callback(void *param, int argc, char **argv, char **azColName)
{
    const char** p = (const char **)param;
    printf("%s\n", p[0]);
    printf("%s\n", p[1]);
}
Run Code Online (Sandbox Code Playgroud)

这是演示概念的简单程序.

#include <stdio.h>

void foo(void* in)
{
    char **p = (char**)in;
    printf("%s\n", p[0]);
    printf("%s\n", p[1]);
}

void main(int argc, char** argv)
{
   char *output_params[] = {"one", "two"};
   foo(output_params);
}
Run Code Online (Sandbox Code Playgroud)