You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

排查C语言数组代码中的段错误原因

代码段错误原因分析与修复

你的代码里有两个关键错误导致了段错误,具体如下:

错误1:数组参数传递错误

在main函数中调用inputArray时,你写的是:

inputArray(myArray[arraySize], arraySize);
  • 数组的下标范围是0到arraySize-1,myArray[arraySize]属于越界访问,访问了不存在的内存区域;
  • inputArray的第一个参数需要的是数组的首地址(int array[]在函数参数中等价于int*指针),但你传递的是一个int类型的变量值,类型不匹配,导致函数内部无法正确操作数组。
    正确的写法应该是传递数组名(数组名本身就是首地址):
inputArray(myArray, arraySize);

错误2:scanf参数传递错误

在inputArray函数的循环里,你写的是:

scanf("%d", array[i]);

scanf的第二个参数必须是变量的内存地址,用来接收输入的值。而array[i]是数组中第i个元素的具体值,不是地址。这里应该传递元素的地址:

scanf("%d", &array[i]);

修复后的完整代码

#include <stdio.h>

void inputArray(int array[], int size);

int main() {
    int arraySize;
    printf("Enter size of array: \n");
    scanf("%d", &arraySize);
    int myArray[arraySize];
    inputArray(myArray, arraySize);

    return 0;
}

void inputArray(int array[], int size){
    int i;
    for (i=0; i<size; i++){
        printf("Enter value for array: \n");
        scanf("%d", &array[i]);
    }
}

内容的提问来源于stack exchange,提问作者emcosokic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:30:58