首页 > 解决方案 > 包含不同值类型的 void 指针的 C 数组

问题描述

我试图有一个带有 3 个指针的 void 数组:

char v1='c'; 
int v2 =12;
int const numOfArgs=3;
char v3[3] = "geo";
void *arg1 = &v1;
void *arg2 = &v2;
void *arg3 = &v3;
void *ptrs[numOfArgs]= {arg1,arg2,arg3};

我尝试了几种方法来使用其中的一个指针ptrs,包括强制转换,但没有任何效果。

我应该如何处理它?

标签: carrayspointersvoid-pointers

解决方案


void *ptrs[numOfArgs]= {arg1,arg2,arg3};

当你编译你的代码时,你会得到错误:

可变大小的对象可能未初始化

如果要以这种方式声明数组,则必须通过以下方式制作常量numOfArgs变量#define

#define numOfArgs 3

或者您可以将指针数组的每个元素初始化为:

    void *ptrs[numOfArgs];
    ptrs[0] = &v1;
    ptrs[1] = &v2;
    ptrs[2] = &v3;

推荐阅读