| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 320 人关注过本帖
标题:一个关于二维数组动态分配的问题
取消只看楼主 加入收藏
donydex
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-7-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
一个关于二维数组动态分配的问题
正在学习Programming in c这本书,书中的8.13这个程序。直接用变量定义数组大小,编译通不过。我在网上查了资料之后,试着用动态分配解决这个问题。但是编译仍然出现了不少问题。向大家请教一下,问题出在哪里。怎么解决。小白一枚,麻烦大家了。
程序代码:
#include<stdio.h>
#include<stdlib.h>


int main(void)
{
    void scalarMultiply(int nRows,int nCols,int matrix[nRows][nCols],int scalar);
    void displayMatrix(int nRows,int nCols,int matrix[nRows][nCols]);
    
    int sampleMatrix[3][5]={{1,2,3,4,0},
                {5,6,7,8,9},
                {10,11,12,13,14}
                }
    printf("Original matrix:\n");
    displayMatrix(3,5,sampleMatrix);

    printf("Multiplied by 2:\n");
    scalarMultiply(3,5,sampleMarix,2);
    displayMatrix(3,5,sampleMatrix);

    printf("Multipled by -1:\n");
    scalarMultiply(3,5,sampleMatrix,-1);
    displayMatrix(3,5,sampleMtrix);

    return 0;
}

void scalarMatrix(int nRows,int nCols,int matrix[nRows][nCols],scalar)
{
    int **matrix=NULL;
    int i,j;
    matrix=(int **)malloc(nRows*sizeof(int *));
    if(!matrix)
        return NULL;
    for(i=0;i<nCols;i++)
    {
    matrix[i]=(int *)malloc(nCols*sizeof(int));
    if (!matrix[i])
        return NULL;
    }
    
    for(i=0;i<nRows;i++)
        for(j=0;j<nCols;j++)
            matrix[i][j]*=scalar;

    for(i=0;i<nRows;i++){
        free(matrix[i]);
        matrix[i]=NULL;
        }

    free(matrix);
    matrix=NULL;
}

void dispalyMatrix(int nRows,int nCols,int matrix[nRows][nCols])
{
    int **matrix=NULL;
    int i,j;
    matrix=(int **)malloc(nRows*sizeof(int *));
    if(!matrix)
        return NULL;
    for(i=0;i<nCols;i++)
    {if (!matrix[i])
        return NULL;
    matrix[i]=(int *)malloc(nCols*sizeof(int));}

    for(i=0;i<nRows;i++){
        for(j=0;j<nCols;j++)
            printf("%d ",matrix[i][j]);
        printf("\n");}

    for(i=0;i<nRows;i++){
        free(matrix[i]);
        matrix[i]=NULL;
        }

    free(matrix);
    matrix=NULL;
}





[ 本帖最后由 donydex 于 2015-7-14 17:43 编辑 ]
搜索更多相关主题的帖子: 动态 资料 网上 color 
2015-07-14 17:38
快速回复:一个关于二维数组动态分配的问题
数据加载中...
 
   



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

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