如何写一个函数返回结构体中的二级指针的地址
怎么写一个函数返回结构体中的二级指针的地址
这是我定义的结构体,我的目的是,创建一个可以存放任意类型的可变数组,现在我想实现
这种功能,通过解引用array_at函数返回的地址来得到val[i]中的元素。
可是二级指针我晕了,该怎么写呢?
这是我写的,结果不对
------解决思路----------------------
二级指针顾名思义,就是一个指针指向的地址存储内容为另一个指针,你所返回的内容不需要加引用符号
------解决思路----------------------
val的内存怎么申请的
------解决思路----------------------
两个问题:第一,如果你是用一维数组,为何要个二级指针?第二,既然想用任意类型的可变数组,为何不直接malloc或calloc?
------解决思路----------------------
用 malloc 简单方便,假如:需要 m*n 的int型数组,malloc(m*n*sizeof(int)),找某个位置的地址也很方便
typedef struct CArray{
int size; //元素个数
int capacity; //容量
void **val; //存储值的数组对象
}CArray;
这是我定义的结构体,我的目的是,创建一个可以存放任意类型的可变数组,现在我想实现
array_at(array3, 2) = 5;
这种功能,通过解引用array_at函数返回的地址来得到val[i]中的元素。
可是二级指针我晕了,该怎么写呢?
inline void** array_at(CArray *array, int index)
{
if (index < 0 || index >= array->size)
exit(0);
return &array->val[index];
}
这是我写的,结果不对
------解决思路----------------------
二级指针顾名思义,就是一个指针指向的地址存储内容为另一个指针,你所返回的内容不需要加引用符号
------解决思路----------------------
val的内存怎么申请的
------解决思路----------------------
两个问题:第一,如果你是用一维数组,为何要个二级指针?第二,既然想用任意类型的可变数组,为何不直接malloc或calloc?
------解决思路----------------------
用 malloc 简单方便,假如:需要 m*n 的int型数组,malloc(m*n*sizeof(int)),找某个位置的地址也很方便