有hxd知道这个为啥算不出来(语言-c语言)

img


这个编译可以通过,就是黑屏,有hxd知道这个为啥算不出来22222222222222

这个应该是因为你在求数组和的函数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;
}
 

img

死循环了呗。for循环结束条件是 p < p+n,这不是永远成立吗???
如果你就想玩一下用p来循环,那么循环外要先定义一个指针记录p的初始位置
int *q = p;
for(;p<q+n;p++)
sum += *p;