注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr.Right

不顾一切的去想,于是我们有了梦想。脚踏实地的去做,于是梦想成了现实。

 
 
 

日志

 
 
关于我

人生一年又一年,只要每年都有所积累,有所成长,都有那么一次自己认为满意的花开时刻就好。即使一时不顺,也要敞开胸怀。生命的荣枯并不是简单的重复,一时的得失不是成败的尺度。花开不是荣耀,而是一个美丽的结束,花谢也不是耻辱,而是一个低调的开始。

网易考拉推荐

阿英讲C语言堆上malloc二维数组的使用  

2014-06-29 00:37:09|  分类: 编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    int i, j, row, column, **arr;
    row = 5;
    column = 5;
    //  意思就是定义一个有row个int类型的指针的动态数组,然后在里面存放指针
    arr = ( int ** )malloc( sizeof( int * ) * row ); // 分配所有行的首地址

    for ( i = 0; i < row; i ++ )
    {
        // 按行分配每一列, arr[i]就是一个指针*(arr + i)
        arr[i] = ( int * )malloc( sizeof( int ) * column );
    }

// assign values
    for ( i = 0; i < row; i++ )
    {
        for ( j = 0; j < column; j++ )
            arr[i][j] = i * row + j;
    }


// print
    for ( i = 0; i < row; i++ )
    {
        for ( j = 0; j < column; j++ )
            // printf("%4d\t",arr[i][j]);   // method 1
            //printf("%d\t", *(*(arr  + i)  + j));   // method 2
            printf( "%d\t", *( arr[i]  + j ) );  // method 3

        printf( "\n" );
    }


    free( arr );


    return 0;
}

-------------------------------------------------------
用一维数组来实现二维数组,是一种折中方案,但是很好理解,也不易出错。这样分配的数组空间是连续的。使用时需要把两维下标转化为一维下标。

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int func(int *array, int m, int n) {
    int i,j;
    for(i=0;i<m;i++) {
        for(j=0;j<n;j++)
            printf("\t%d",*(array+i*n+j));
        printf("\n");
    }
    return 0;
}

int main(int argc,char** argv) {
    int m,n,i;
    int *array;
    assert(argc == 3);
    m = atoi(argv[1]);
    n = atoi(argv[2]);
    array = (int*)malloc(m*n*sizeof(int));
    for(i=0;i<m*n;i++)
        array[i] = i;
    func(array,m,n);
    return 0;
}

  评论这张
 
阅读(358)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016