为什么我在这个程序中出现分段错误?

时间:2016-08-27 13:32:19

标签: c segmentation-fault

#include<stdio.h>
int max_pairwise(int *array,int n) {
    int result=0;
    int i,j;

    for(i=0; i<n; i++)
        for(j=i+1; j<n; i++) {
            if(array[i]*array[j]>result)
                result=array[i]*array[j];
        }
    return result;
}

int main(void) {

    int n;
    scanf("%d",&n);

    int array[n];
    int i;
    for(i=0; i<n; i++)
        scanf("%d",&array[i]);


    int result=max_pairwise(array,n);
    printf("%d",result);

    return 0;
}

2 个答案:

答案 0 :(得分:3)

你在内循环中递增了错误的变量:

//  here------v
for(j=i+1;j<n;i++)

结果,i不断增加。这导致读取数组的末尾,导致undefined behavior,其中一个可能的症状是段错误。

你想要这个:

for(j=i+1;j<n;j++)

答案 1 :(得分:1)

在函数max_pairwise()中,在第二个for循环中你输入了i +,而不是j ++