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

C语言:如何编写数组获取、展示函数并实现数组传递

C语言数组传递问题解决方案

原代码的核心问题是:getArray和displayArray直接访问了main函数的局部变量,这违反了C语言的作用域规则——局部变量只能在自身函数内部使用。要解决这个问题,必须通过参数传递把main里的数组、数组大小传给这两个函数,具体修改如下:

修改后的完整可运行代码

#include <stdio.h>

// 获取用户输入:接收数组指针和数组大小的指针(用于修改大小值)
void getArray(int *a, int *n)
{
    printf("Enter size of array: ");
    scanf("%d", n);

    printf("Enter %d elements in the array : ", *n);
    for(int i = 0; i < *n; i++)
    {
        scanf("%d", &a[i]);
    }
}

// 展示数组:接收数组指针和数组大小
void displayArray(int *a, int n)
{
    printf("\nElements in array are: ");
    for(int i = 0; i < n; i++)
    {
        printf("%d  ", a[i]);
    }
}

int main(){
    int a[1000], n;
    // 传递数组名(自动转为指针)和n的地址给getArray
    getArray(a, &n);
    // 传递数组指针和n的实际值给displayArray
    displayArray(a, n);
    return 0;
}

关键修改说明

  • 数组传递方式:C语言中数组作为参数传递时会自动退化为指针,所以函数参数写int *a或int a[]都可以接收数组的首地址。
  • 修改数组大小的技巧:因为getArray需要修改main里的n值,所以必须传递n的内存地址(&n),函数内部通过*n来访问和修改这个值。
  • 局部变量封装:把循环变量i放在每个函数的循环内部声明(C99及以上标准支持),避免跨函数使用未声明的变量,代码更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:01:11