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

C语言实现两个数组转置时函数参数传递及报错问题求助

问题解答

1. 核心报错原因

你代码的警告和函数联动异常完全来自于FindTranspose函数调用时的参数类型不匹配:你传递的before[3][3]是尝试取下标为(3,3)的数组元素,不仅数组越界(33数组的最大合法下标是2),而且类型是单个int值,和函数要求的二维数组参数完全不符*。

2. 各位置参数填写规范

  • 函数定义int FindTranspose(????):你当前写的参数列表int before[3][3], int after[3][3], int row_num, int col_num是完全可用的,建议把形参i、j改名成row_num、col_num避免和内部循环变量冲突。另外你当前函数没有返回int值,建议把返回值改成void更合理。
  • 主函数定义int main(????):不需要接收命令行参数的场景下,标准写法为int main(void),你原有写法int main()也可以正常运行。
  • 函数调用FindTranspose(????):数组传参直接写数组名即可,正确写法为FindTranspose(before, after, 3, 3),直接传递数组首地址和矩阵的行列数即可。

3. 指针相关说明

你当前固定3*3矩阵的场景不需要显式写指针语法:C语言中数组作为函数参数传递时,会自动退化为指向首元素的指针,你写的int before[3][3]本质等价于int (*before)[3](指向长度为3的int数组的指针),编译器会自动处理地址传递,修改形参数组的内容会直接作用于实参数组,符合你转置功能的需求。
如果后续需要适配任意大小的矩阵,可以改用一级指针配合动态内存分配,实现更通用的转置函数。

修正后的完整代码

#include <stdio.h>

// 改返回值为void,因为不需要返回整数结果,形参改名避免冲突
void FindTranspose(int before[3][3], int after[3][3], int row_num, int col_num){
    int rows, columns, i, j;
    printf("\nThe original matrix: \n");
    for(i=0;i<row_num;i++){
        printf("\n");
        for(j=0;j<col_num;j++){
            printf("%d ", before[i][j]);
        }
    }
    for(rows = 0; rows < row_num; rows++){
        for(columns = 0;columns < col_num; columns++){
            after[columns][rows] = before[rows][columns];
        }
    }
    printf("\n");
    printf("\nThe Transpose of the matrix: \n");
    printf("\n");
    for(rows = 0; rows < col_num; rows++){
        for(columns = 0; columns < row_num; columns++){
            printf("%d ", after[rows][columns]);
        }
    printf("\n");
    }
}

int main(void){
    int before[3][3], after[3][3], i, j;
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            printf("Enter number for array - [%d],[%d] : ",i,j);
            scanf("%d", &before[i][j]);
        }
    }
    // 正确传参:直接传数组名、行列数
    FindTranspose(before, after, 3, 3);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:09:02