用指针计算数组的和
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;}