-3
我很不熟悉指針的工作方式。我正在使用一個以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"
所以,你真正想說的是無效的'的RHS * callback_context'不是'字符**'但'字符(*)[16]',這就是爲什麼轉換'char **'的'void *'不起作用 - 因爲'char **'與'char(*)[16]'不是同一類型? –
謝謝!如果最初的'callback_value'被初始化爲'char * callback_value [2]',我希望在函數中傳遞並訪問這個指針,那麼怎麼辦? – gauge
@gauge你可以在這種情況下使用'char **':https://ideone.com/FmRRf9 – mch