C中是否有一种方法可以指向一个指针数组,每个指针都指向不同的数据类型?

时间:2019-05-21 05:06:39

标签: c pointers void-pointers

我正在尝试在嵌入式C中创建一个自动化模板,该模板具有固定的平面文本格式,并插入需要从数组中选取的可变参数。因此,我将在出现参数的位置放置固定器。一些参数是字符串,而其他参数是整数值或浮点值。

我已插入扩展的ASCII值作为占位符,然后减去0x80以根据占位符的出现点提取索引。但是我还没有办法指向不同的源表。

1 个答案:

答案 0 :(得分:2)

按定义,数组是相似数据类型的集合。因此,没有直接的方法可以拥有指向不同数据类型的指针数组。

其中一种实现方法是通过type casting具有所需数据类型的数组元素,同时访问/取消引用元素。

要在访问元素时知道正确的type,您需要在定义元素时存储类型。

可能的解决方案如下所示:

typedef struct
{
   int type; //0 - enumDay, 1 - Struct C etc
   void* data;
}mydata_t;

mydata_t myarray[10];

分配:

myarray[0].type = 2; //Lets assume 2 for string
myarray[0].data = "My String";

使用:

 if( myarray[0].type == 2) // is it a string?
 {
    printf("This is the string :%s \n",(char*)myarray[0].Data);
 }