我对指针的工作原理非常不熟悉。我正在使用一个以void *
上下文作为参数回调函数的函数。
我如何将一组字符串分配给void *
然后检索它们?
char callback_value[2][16];
snprintf(callback_value[0], sizeof(callback_value[0]), "string1");
snprintf(callback_value[1], sizeof(callback_value[1]), "string2");
// pass an array of strings into the void * callback context
void *callback_context = callback_value;
// Illustration only, doesn't work
// retrieve it here
char **retrieved_strings = (char **)callback_context;
printf("%s", retrieved_strings[0]); // Want "string1"
printf("%s", retrieved_strings[1]); // Want "string2"
答案 0 :(得分:1)
#include <stdio.h>
void func(void* arg)
{
char (*tmp)[16] = arg;
printf("%s\n%s\n", tmp[0], tmp[1]);
}
int main(void)
{
char callback_value[2][16] = {"string1", "string2"};
void *callback_context = callback_value;
func(callback_context);
return 0;
}
char**
与char[2][16]
不兼容,您必须使用指向char char (*)[16]
数组的指针。