int sump(int * start, int * end)
{
int total = 0;
while (start < end)
{
total += *start;
start++;
}
return total;
}
这个要看你传入的实参定义时候的先后位置,因为局部变量在栈上分配位置的时候是向低地址延伸的,比如你在主函数中定义,int a;,int b;a在b之前定义
那么a的地址就比b高,你把a的地址给start,把b的地址给end,这样start就不会小于end,所以就结束了。更何况你这些传入的如果不是数组你这个函数真的没什么意义。
只有当start是指针变量时,才可以使用++这样的表达式。
*start++;
不知道你这段程序的背景是什么,看起来就是指针start指向的内存一直到指针end指向的内存,这段内存是连续的,应该是数组吧。然后这个数组的元素保存了int。
所以才可以这样相加求和。不然没什么意义的。
将数值或者一段地址内的所有整型数加起来。从开始的地址加到结束的地址。结束的那个地址上的数不加。
由于start++
start=end