本题出自 C Primer Plus
#include<stdio.h>
#define SIZE 10
int sump(int *start,int *stop);
int main(void)
{
int marbless[SIZE] = {20,10,5,39,4,16,19,26,31,20};
long answer;
answer = sump(marbless,marbless+SIZE);
printf("%d",answer);
return 0;
}
int sump(int *start,int *stop)
{
printf("*start = %d\n",*start);
printf("*stop = %d\n",*stop);
int total = 0;
while(start < stop)
{
printf("start = %d\n",start);
printf("stop = %d\n",stop);
printf("*start = %d\n",*start);
printf("*stop = %d\n",*stop);
total += *start;
start++;
}
return total;
}
添加 printf 后各输出如下:
*start = 20
*stop = 1
start = 6684192
stop = 6684232
*start = 20
*stop = 1
start = 6684196
stop = 6684232
*start = 10
*stop = 1
start = 6684200
stop = 6684232
....
190
不明白的就是为什么 *stop 的值会是 1 ?? 不是 marbles + SIZE 吗?? 求解!!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.