| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
雷速体育发帖软件开发QQ118000023C语言培训|一对一辅导|零基础学编程LightningChart 快速先进的.Net图表控件
共有 494 人关注过本帖
标题:求助!用指针变量作为参数定义一个函数,打印多个二维数组。
只看楼主 收藏
三角湖
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-11-20
结帖率:0
  已结贴   问题点数:20  回复次数:2   
求助!用指针变量作为参数定义一个函数,打印多个二维数组。
用指针变量作为参数定义一个函数,打印多个二维数组。
题目就是这样了,各位帮帮忙,谢谢!
2017-11-21 13:31
九转星河
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:长长久久
等 级:版主
威 望:44
帖 子:4898
专家分:13909
注 册:2016-10-22
  得分:20 
常规方法传参要知道一维大小~

程序代码:

#include<stdio.h>

#define SIZE(a) sizeof (a)/sizeof(*a)

void fun(int* ,size_t ,size_t );

int main( void )
{
    int a[2][2]=
    {
        {1,2},
        {3,4}
    };
   
    int b[3][4]=
    {
        {1,2,3,4},
        {5,6,7,8},
        {9,10,11,12}
    };
   
    fun((int* )a,SIZE(a),SIZE(*a));
    fun((int* )b,SIZE(b),SIZE(*b));
   
    return 0;
}

void fun(int* a,size_t i,size_t j)
{
    size_t k=0;
    size_t t=j+1;
   
    for (;k!=i*t;++k)
        printf((k%t)^j?"%-4d":"\n",a[j*(k/t)+k%t]);
}


还有另一种方法就是用动态数组处理(复杂点的就用平衡树来模拟多维数组——比较复杂有时效率较低不过却可以节省空间处理灵活)~



[此贴子已经被作者于2017-11-21 21:26编辑过]


[code]/*~个性签名:弟弟的妹妹叫妹妹,弟弟的姐姐叫姐姐~ 2018-06-18更~*/[/code]
2017-11-21 21:18
九转星河
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:长长久久
等 级:版主
威 望:44
帖 子:4898
专家分:13909
注 册:2016-10-22
  得分:0 
然后刚刚学习了一种新写法~


    for (;k!=i*t;++k)
        printf("%-4d\0\n"+5*!(k%t^j),a[j*(k/t)+k%t]);

[code]/*~个性签名:弟弟的妹妹叫妹妹,弟弟的姐姐叫姐姐~ 2018-06-18更~*/[/code]
2017-11-21 21:43







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.141981 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved