【发布时间】:2019-08-24 09:45:48
【问题描述】:
我想做一个能够移位数组元素的函数,但数组可以是整数或我定义的结构。如何迭代指向 void 数组的指针?
到目前为止,这是我使用 Ints 的示例的代码,但我计划将相同的函数用于其他数据类型:
void shift(const void *source, int pos, int lenght){
memmove(&source[pos], &source[pos+1], sizeof(int)*(lenght-pos-1) );
}
int main(int argc, char *argv[]) {
int a[10] = {1,2,3,4,5,6};
shift(a, 3, 10);
}
【问题讨论】:
-
“空数组”是什么意思?不包含任何值的数组?
-
在 C 中,
[..]运算符充当 dereference。您不能取消引用void类型。您唯一真正的选择是将所有内容与sizeof (your_type)一起转换为char*,并根据需要调整索引。 -
我所说的 void 数组是指一个数组,其元素为 void*
-
如果你有一个
void *的数组,你就会有一个void **类型的变量,但这不是你所拥有的。您需要准确显示此函数的调用方式。请使用minimal reproducible example 更新您的问题。
标签: c arrays void-pointers