将字符串数组分配和检索到void指针

时间:2015-07-03 05:12:45

标签: c arrays string pointers

我对指针的工作原理非常不熟悉。我正在使用一个以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"

1 个答案:

答案 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]数组的指针。

https://ideone.com/BqgeN6