【C语言】能不能做出保存任意类型的结构体类型
struct ListItem
{
    void *data;
    struct ListItem *NEXTITEM;
};

想试试看C能不能做出类似Python中列表一样,可以保存不同类型的数据类型,像这样定义一个结构体

struct ListItem item[3];

item[0].data = 666;
item[0].NEXTITEM = NULL;

item[1].data = "cool";
item[0].NEXTITEM = &item[1];

float tempFloat = 1.66;
item[2].data = &tempFloat;
item[1].NEXTITEM = &item[2];
item[2].NEXTITEM = NULL;

类似这样传入数值,整形和字符串都可以正常输出,为什么浮点类型输出来就是0.0000?
已经很久没有碰过C语言了,如果有大佬知道,万分感谢...

1个回答

可以的。
struct MyStruct node;
int x = 1;
float y = 0.15f;

node.data = &x;
node.next = NULL;
printf("%d\n", *((int*)node.data));
node.data = &y;
node.next = NULL;

printf("%.2f\n", *((float*)node.data));

//再加个data存放结构指针的例子
node1.data = &node;
node1.next = NULL;
printf("%.2f", *(float*)(((struct MyStruct*)node1.data)->data));

void*代表的是通用型指针,你可以将指向任何类型的指针存放进去,但是取出来的时候必须注意要先转换成对应的指针,再取值就可以了,比如上面先将第一个指针转换成指向整数的指针,然后再取值
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐