【问题标题】:How do I pass an array of character pointers as void *, then cast back to array of character pointers?如何将字符指针数组作为 void * 传递,然后转换回字符指针数组?
【发布时间】:2015-04-13 17:03:55
【问题描述】:

我将一个字符指针数组传递给sqlite3_exec,它接受1个参数并将其呈现为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;
}

通过后如何访问?

【问题讨论】:

  • char **output_params = param; 怎么样,并通过output_params[0]output_params[1] 等访问char *s。

标签: c arrays pointers void void-pointers


【解决方案1】:

这对我有用:

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]);
}

这是一个演示这个概念的简单程序。

#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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多