这个应该是因为你在求数组和的函数sum_array()里面,p指针++后,数组越界了,用一个临时指针保存p指针的值后,用他来用做判断是否在数组范围内即可,修改如下:
#include <stdio.h>
#define N 10
int sum_array(const int * p,int n){
int sum=0;
const int * tp = p;
for(;p<tp+n;p++){
sum+=*p;
}
return sum;
}
int main(void){
int a[10] = {1,2,3,4,5,6,7,8,9,0};
printf("total:%d",sum_array(&a[0],N));
return 0;
}
死循环了呗。for循环结束条件是 p < p+n,这不是永远成立吗???
如果你就想玩一下用p来循环,那么循环外要先定义一个指针记录p的初始位置
int *q = p;
for(;p<q+n;p++)
sum += *p;