一笑照夜 2017-03-09 12:33 采纳率: 100%
浏览 889
已采纳

求问void**的几个问题

今天的数据结构老师给了这样几行代码

typedef void* ArrayListValue;
struct _ArrayList
{
ArrayListValue* data;
unsigned int length;
unsigned int _alloced;
};
int Add_ArrayList(ArrayList *L, unsigned int index, ArrayListValue data)
{
}
我有以下几个问题:

1、void* 是不是指的是可以指向任何数据类型的指针?
2、如果1的回答是“是”,那么ArrayListValue* data是不是等价于void** data,即data指向一个指向任何数据类型的指针的指针?我认为老师的目的是建一个数组,数元素可以为任何类型,但是现在是这个意思吗?为什么不是ArrayListValue data,他的意思不是void* data,指的才是建一个数组,元素可以为任何类型的意思吧。
3、同样的,在Add_ArrayList函数中,参数是ArrayListValue data,意思不是void* data吗?难道这里的data是一个指针吗?但是函数的意思是data是一个插入数组的数据啊,不应该是指针的。

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-03-09 15:17
    关注

    1、void* 是不是指的是可以指向任何数据类型的指针?

    2、如果1的回答是“是”,那么ArrayListValue* data是不是等价于void** data,即data指向一个指向任何数据类型的指针的指针?我认为老师的目的是建一个数组,数元素可以为任何类型,但是现在是这个意思吗?为什么不是ArrayListValue data,他的意思不是void* data,指的才是建一个数组,元素可以为任何类型的意思吧。
    ArrayListValue data;就可以。ArrayListValue* data;的确是void **,没必要。除非ArrayListValue* data;不用于存数据,而是存列表的下一个节点
    3、同样的,在Add_ArrayList函数中,参数是ArrayListValue data,意思不是void* data吗?难道这里的data是一个指针吗?但是函数的意思是data是一个插入数组的数据啊,不应该是指针的。
    插入任意类型数据,只能用void *,不能用非指针,这么写是对的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ROS Turtlebot3 多机协同自主探索环境时遇到的多机任务分配问题,explore节点
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题