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

C语言指针实现数组元素插入功能异常问题求助

问题诊断与修复方案

你遇到的问题根源非常明确:你的insert函数在成功插入元素后,没有更新数组的实际元素计数*size。

问题细节拆解

在insert函数中,当数组未满时,你确实把新元素放到了ar[*size]的位置,但紧接着没有对*size进行自增操作。这就导致不管你插入多少次元素,size的值始终停留在初始的0(或者initialize函数里重置后的0),所以display函数根据size来遍历数组时,自然会显示元素数量为0,也不会输出任何已插入的元素。

修复后的insert函数

只需要在元素赋值后添加一行(*size)++;,就能解决核心问题:

void insert (int max, int *size, int ar[], int num) {
    if(*size>=MAX) {
        printf("Array full\n"); // 建议加上换行,避免后续输出混乱
    } else {
        ar[*size] = num;
        (*size)++; // 关键操作:插入元素后更新数组的实际元素计数
    }
}

额外优化建议

为了让程序更健壮,还可以给initialize函数加一个输入合法性检查,避免用户输入超过数组最大值的元素数量:

void initialize (int *size, int ar[]) {
    int total, i, num;
    printf ("Enter the total number of integers (MAX=%d): \n", MAX);
    scanf ("%d", &total);
    // 新增:校验输入的元素总数是否合法
    if (total > MAX) {
        printf("Input exceeds maximum array size, will only insert %d elements\n", MAX);
        total = MAX;
    } else if (total < 0) {
        printf("Invalid number, setting to 0\n");
        total = 0;
    }
    (*size) = 0;
    printf ("Enter the integers: \n");
    for (i = 0; i < total; i++) {
        scanf ("%d", &num);
        insert (MAX, size, ar, num);
    }
}

现在再按照你的测试流程运行:运行程序→选择选项1→输入数组大小→输入要添加的元素→选择选项4显示数组,就能正常看到插入的元素和正确的元素数量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:32:38