用指针计算数组的和,该怎么解决

用指针计算数组的和
C语言书上的一道练习题目,要求,不能有临时计数器变量,不能有方括号[]
写出来结构总是不对,请大家帮我看一下哪里理解错了

C/C++ code

#include <stdio.h>

int sum_array(const int *a,  int n);

int main(int argc, char *argv[])
{
    int i[] = {1,3,5,7,9};

    printf("Value: %d\n\n", sum_array(i, 5));//这里传i 或 &i 结果都是错的
    return 0;
}

int sum_array(const int *a, int n)
{
    int sum;
    
    for(; a < n; ++a){
        sum += *a;
    }
        
        
    return sum;
}



------解决方案--------------------
for (; a < n; ++a)
a是指针,怎么和n比
------解决方案--------------------
“a < n”这里不对,一个表示内存地址的指针变量直接跟一个小整数比较,比较的结果很可能不是你想要的。
其实你可以这么写:
C/C++ code
int sum_array(const int *begin, const int *end)
{
    int sum;
    
    for(; begin < end; ++begin){
        sum += *begin;
    }
        
    return sum;
}