随笔记-01

二维数组作为参数传递的3种传递方式

void average_fun1(int arr[][4])//传递数组,并标明一维数组元素个数
{

    for(int row = 0; row < 3;row++)
    {
        int sum = 0;
        for(int col = 0; col < 4; col++)
        {
            sum += arr[row][col];
        }
        printf("第%d行平均数: %.3f\n",row + 1,(double)(sum) / 4);
    }

}
void average_fun2(int (*arr)[4])//传递数组指针,并标明数组元素个数
{

    for(int row = 0; row < 3; row++)
    {
        int sum = 0;
        for(int col = 0; col < 4; col++)
        {
            sum += arr[row][col];
        }
        printf("第%d行平均数: %.3f\n",row + 1,(double)(sum) / 4);
    }

}
void average_fun3(int* arr)//指针传递,不管是几维数组都把他看成是指针,
{

    for(int row = 0; row < 3; row++)
    {
        int sum = 0;
        for(int col = 0; col < 4; col++)
        {
            sum += *(arr + row*4 + col);//当一维数组看待内存连续访问读取数据
        }
        printf("第%d行平均数: %.3f\n",row + 1,(double)(sum) / 4);
    }

}
void test029()
{
    int arr[3][4] = {
        {2,3,5,7},
        {5,6,2,8},
        {9,3,2,1},
    };
    average_fun1(arr);//方法1
    average_fun2(arr);//方法2
    average_fun3((int* )arr);//方法3(强制转换,因为arr本质是个2级指针,强制转换为一级指针传递 / 也可不转换 都指向起始地址)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值