吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 833|回复: 3
收起左侧

[求助] 在C语言数组传入形参时发现的问题

[复制链接]
AnorilRin 发表于 2021-12-5 15:59
lz刚学C语言不久,在写程序时,出现一些问题,望大佬指明。题目是写一个求二维字符数组的平均值的函数,代码如下:(简略版
double matrixAvg(int x,int y,double a[x][y])
{
    int i,j;
    double sum;
    for(i=0;i<x;i++)
            for(j=0;j<y;j++)
                sum+=a[i][j];
    return sum/(x*y);
}

我记得C语言中是不能定义动态数组的,所以在写形参时,数组的我原本写的double a[][1000],但是这样写出来后运行不出来,还会出现0x0000.....不可read的弹窗。但是写成上面的样子就能运行,希望有大佬解答一下这是什么原因

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小能维尼 发表于 2021-12-5 17:52
你的意思的把形参double a[x][y] 替换成了 double a[][1000]吗?
double matrixAvg(int x,int y,double a[][1000])这样?
形参的内容意义并不是要去定义数组,而是要去接收数组,它的大小就是接收的数组大小,不需要预先定义出大小来。
answdl 发表于 2021-12-5 18:47
写成(double a[x][y])这样编译器好像是不认的
写成double a[][1000],这样子数组就确定了,只是在和传过来的数组对不上会有崩溃的可能

传地址就好了

double matrixAvg(double*a,int x,int y)
访问二维数组元素时用
*(a+i*x+j)
这个和a[i][j]是一个意思(还有其他写法,都大同小异)
 楼主| AnorilRin 发表于 2021-12-6 16:07
小能维尼 发表于 2021-12-5 17:52
你的意思的把形参double a[x][y] 替换成了 double a[][1000]吗?
double matrixAvg(int x,int y,double a[ ...

一般会写成什么样子呢?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表