她是我的简化代码:
void main(){
void* ptr;
char* args[3];
args[0]="Arg1";
args[1]="Arg2";
args[2]="Arg3";
ptr = &args;
myMethod(ptr);
}
static void myMethod(void* args){
}
如何将 void* args
转换为 char*[]
?在 myMethod(void*)
?
最佳答案
你想要一个指向 char
的指针:
#include <stdio.h>
static void myMethod(void *args)
{
char **ptr = args;
printf("%s\n", ptr[1]);
}
int main(void)
{
void *ptr;
char *args[3];
args[0]="Arg1";
args[1]="Arg2";
args[2]="Arg3";
ptr = args; /* You don't need the & */
myMethod(ptr);
return 0;
}
正如@Eregrith 所指出的,将单元格数量传递给函数以防止越界访问:
#include <stdio.h>
static void myMethod(void *args, size_t elems)
{
char **ptr = args;
for (size_t i = 0; i < elems; i++)
printf("%s\n", ptr[i]);
}
int main(void)
{
void *ptr;
char *args[3];
args[0]="Arg1";
args[1]="Arg2";
args[2]="Arg3";
ptr = args;
myMethod(ptr, sizeof(args) / sizeof(args[0]));
return 0;
}
关于c - 通过 voidpointer 传递 char* args[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29488921/