我有一个数组int arr[5] = {10, 2, 3, 5, 1}
,我想将最后 4 个元素(基本上是从索引 1 到索引 4)作为数组传递到参数中(因此:[2, 3, 5, 1]
)。有没有一种方法可以非常简单地做到这一点(就像在 Ruby 中如何执行 arr[1..4] 一样),或者我必须使用 for 循环?
您可以手动将指针加 1:
your_function(arr + 1)
C 中的指针运算隐式地考虑了元素的大小,因此加 1 实际上会加1 * sizeof(int)
为了更接近其他语言的数组切片,请尝试以下函数:
int *slice_array(int *array, int start, int end) {
int numElements = (end - start + 1)
int numBytes = sizeof(int) * numElements;
int *slice = malloc(numBytes);
memcpy(slice, array + start, numBytes)
return slice;
}
它在给定的开始索引和结束索引之间创建数组的切片。记得free()
吃完后切片!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)