| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 11879 人关注过本帖
标题:c语言中怎么把一个大小不确定的二维数组当作参数传入函数中?
只看楼主 加入收藏
平行线张
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-12-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
c语言中怎么把一个大小不确定的二维数组当作参数传入函数中?
比如我要在一个函数中对二维数组a[i][j]进行处理,将a[i][j]的每个元素打印出来,怎样写这个函数呢?
搜索更多相关主题的帖子: c语言 元素 
2016-12-07 14:13
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
数组的大小应该是确定的吧?
数组也是分配连续的块空间,传数组首址和大小。
2016-12-07 14:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
程序代码:
#include <stdio.h>

void PrintArray( size_t, size_t, int arr[][*] );
#define PRINTARRAY(arr) PrintArray( sizeof(arr)/sizeof(*arr), sizeof(*arr)/sizeof(**arr), arr )

int main( void )
{
    int a[2][3] = { 0,1,2,3,4,5 };
    PRINTARRAY( a );
   
    puts( "-------------------------" );
   
    int b[3][2] = { 0,1,2,3,4,5 };
    PRINTARRAY( b );
   
    return 0;
}

void PrintArray( size_t r, size_t c, int arr[r][c] )
{
    for( size_t i=0; i!=r; ++i )
        for( size_t j=0; j!=c; ++j )
            printf( "%d%s", arr[i][j], (j+1!=c?", ":"\n") );
}

输出:
0, 1, 2
3, 4, 5
-------------------------
0, 1
2, 3
4, 5

2016-12-07 16:20
艾瑞克
Rank: 3Rank: 3
来 自:贵州
等 级:论坛游侠
帖 子:100
专家分:105
注 册:2016-11-8
收藏
得分:5 
是这样   


#include <stdio.h>
#include <stdlib.h>
int    main()
{
    int   a[4][6];
    int   k;
    for(int   i=0;i<4;i++)
    {
    printf("请输入序号");
    scanf("%d",&k);
    a[i][0]=k;
    }
    for (int  l=0;l<4;l++)
    {
        printf("%d\t",a[l][0]);
    }

    system("pause");
}



有疑问Q我QQ:1620123313
2016-12-07 16:27
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
要注意的是,传参时只是光把数组的首地址传进去。如果在调用函数里面求原数组大小(sizof(a)/sizeof(a[0]))来求一维数组的大小会失效,值会为1。

因此确定数组大小需要把一维大小和相对于一维和二维的大小传进去。
就像2楼和三楼的做法一样

当然,用动态数组也是类似的

当然,还可以用全局变量(不过不太推荐)~

下面给出的是申请动态二维数组的简单程序

[code#include<stdio.h>
#include<stdlib.h>
int fun(int **a,int i,int j)
{
    printf("%d\n",a[i][j]);
}
int main()
{
    int  **a=(int **)malloc(12);

    a[0]=(int *)malloc(12);
    a[1]=(int *)malloc(12);
    a[2]=(int *)malloc(12);

    a[1][1]=1;

    fun(a,1,1);

    free(a[0]);
    free(a[1]);
    free(a[2]);
    free(a);

    return 0;
}
[/code]



[此贴子已经被作者于2016-12-7 18:05编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-07 17:57
快速回复:c语言中怎么把一个大小不确定的二维数组当作参数传入函数中?
数据加载中...
 
   



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

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