具有两个指针的数组的大小

时间:2018-12-13 21:18:17

标签: c

我有一个函数接收两个指针,即数组的第一个成员和最后一个指针,我不能使用for循环,do和do while。如何获得指向数组中间成员的指针?我是初学者。

1 个答案:

答案 0 :(得分:2)

使用指针算术以元素数量计算指针之间​​的距离,然后除以2。然后加到start

void foo(const int *start, const int *end)
{
     assert(start != end); // avoid returning invalid pointer if list is empty
     const int *middle = start + (end - start)/2;
     ...
}

根据您要使用的算法,可能会出现一次性错误和调整(例如:左或右等分,如果列表仅包含一个元素,则可能要选择中间作为第一个元素(上面的代码会),但是您可能需要添加1来选择超出元素的位置),但这是一般的想法,没有循环,O(1)复杂度。