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语言了,如果有大佬知道,万分感谢...
可以的。
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*代表的是通用型指针,你可以将指向任何类型的指针存放进去,但是取出来的时候必须注意要先转换成对应的指针,再取值就可以了,比如上面先将第一个指针转换成指向整数的指针,然后再取值