请教指针和数组的一个例题
#include <stdio.h>
#define SIZE 10
int sump(int * start, int * end);
int main(void)
{
int marbles[SIZE] = {20,10,5,39,4,16,19,26,31,20};
long answer;
answer = sump(marbles, marbles + SIZE);
printf("The total number of marbles is %ld.\n", answer);
return 0;
}
int sump(int * start, int * end)
{
int total = 0;
while (start < end)
{
total += *start; /* add value to total */
start++; /* advance pointer to next element */
}
return total;
}
最后20这个数据我感觉不会计算在内吧,为什么计算机计算了呢,不大明白,end指的是哪里啊
[解决办法]
*marbles=20,*marbles+9=20,*marbles+10指在了20的后面, while (start < end)最后一次循环
start=*marbles+9所以20是计算在内的
[解决办法]
- C/C++ code
#include <stdio.h>#define SIZE 10int sump(int * start, int * end);int main(void){ int marbles[SIZE] = {20,10,5,39,4,16,19,26,31,20}; long answer; answer = sump(marbles, marbles + SIZE-1); printf("The total number of marbles is %ld.\n", answer); return 0;}int sump(int * start, int * end){ int total = 0; while (start < end) { total += *start; /* add value to total */ start++; /* advance pointer to next element */ } return total;}