Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-循环穿过空隙*知道元素大小_C_Arrays_Void Pointers - Fatal编程技术网

C-循环穿过空隙*知道元素大小

C-循环穿过空隙*知道元素大小,c,arrays,void-pointers,C,Arrays,Void Pointers,我有以下结构: typedef struct genericArray { void* elements; size_t element_size; size_t num_of_elemtns; } *GenericArray; 以及以下功能: void MyFunction(GenericArray array) { for (int i = 0; i < array->num_of_elemtns; i++) { void

我有以下结构:

typedef struct genericArray
{
    void* elements;
    size_t element_size;
    size_t num_of_elemtns;
} *GenericArray;
以及以下功能:

void MyFunction(GenericArray array)
{
    for (int i = 0; i < array->num_of_elemtns; i++)
    {
        void* element =  array->elements + array->element_size * i;
    }
}
void MyFunction(常规数组)
{
对于(int i=0;inum\u of_elemtns;i++)
{
空*元素=数组->元素+数组->元素大小*i;
}
}
当数组中每个元素的大小已知时,我想在中为每个元素生成一个索引。 但是,我得到一个编译错误:
错误2错误C2036:'void*':未知大小

可能吗?我做错了什么

您不能使用
void*
执行指针算术,它至少需要是
char*
@unholymous。谢谢,问题是数组中元素的类型未知。您可以使用
char*
引用任何类型的元素。如果将其强制转换为
char*
,则标准保证允许使用它,这意味着将数据指针视为指向1字节数据大小的指针。所以你可以这样访问它:
void*element=(char*)(数组->元素)+数组->元素大小*i发布的代码通过typedef定义指针。这(几乎)总是个坏主意