用指针计算数组的和,该怎么解决
用指针计算数组的和
C语言书上的一道练习题目,要求,不能有临时计数器变量,不能有方括号[]
写出来结构总是不对,请大家帮我看一下哪里理解错了
------解决方案--------------------
for (; a < n; ++a)
a是指针,怎么和n比
------解决方案--------------------
“a < n”这里不对,一个表示内存地址的指针变量直接跟一个小整数比较,比较的结果很可能不是你想要的。
其实你可以这么写:
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; }