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

C语言函数为传入数组赋值时报错,求问题原因及解决方案

问题分析与代码修正

错误原因

你遇到的报错直接源于两个问题:

  • C语言不支持引用语法(int &arrayreturn[i]是C++的写法),编译器无法识别该语法,因此抛出expected identifier or '('错误。
  • 数组元素赋值的写法完全错误,不需要重新声明变量,直接对数组元素赋值即可。

修正后的代码

#include "stdio.h"

int printsomething(int *array, int arrayreturn[5]) {
    int i;
    for(i = 0; i < 10; ++i) {
        printf("%d\n", array[i]);
    }
    for(i = 0; i < 5; ++i) {
       // 直接给数组元素赋值,移除错误的引用声明和初始化语法
       arrayreturn[i] = i;
    }
    return 0;
}

int main() {
    int array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int arrayp[5];
    int i;
    printsomething(array, arrayp);
    for(i = 0; i < 5; ++i) {
        printf("%d\n", arrayp[i]);
    }
    return 0;
}

关于你的思路

你的核心思路完全正确:C语言确实无法直接返回数组,通过将目标数组作为参数传入函数,在函数内部修改其元素值,是C语言中实现“返回数组”效果的标准做法。

补充知识点:函数参数中的int arrayreturn[5]会被编译器自动解析为int *arrayreturn(数组退化为指针),因此你在函数中对arrayreturn[i]的修改,本质是直接操作main函数中arrayp数组的内存,修改会直接同步到原数组上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:01:33