关于输出一个矩阵的问题

daocha 2009-10-29 03:47:59
因特殊要求 不想用二维数组来输出矩阵
为什么呢?因为需要动态改变矩阵的行列数目 , 也就是说需要通过输入来改变MAX_SIZE的值 所以我选择用指针做
我的思想是 (举例 3行3列的矩阵)
先声明一个指针型数组 大小为3 ( )( )( )
然后分别在每个位置里面插入一个大小为3的整型数组 (大小为3的数组)(大小为3的数组)(大小为3的数组)
这样造成了一个类似于矩阵的东西 指针数组的下标可以作为行row, 而每个单元中的整形数组的下标呢 可以作为列 column
我现在只对这个伪矩阵进行初始化操作 要求不高 全部变为0 但是下面这样写 我想了半天没觉得哪里出错了 可是输出结果貌似是输出的地址数值。

#include <stdio.h>
#include <stdlib.h>
void print_array( int* m, int MAX_SIZE )
{
int i;
for ( i = 0 ; i < MAX_SIZE ; i++ )
{
printf("%d\t",m[i]);
}
printf("\n");
}
void init_array( int* m, int MAX_SIZE )
{
int i;
for ( i = 0 ; i < MAX_SIZE ; i++ )
{
m[i]=0;
}
}
int main()
{
int MAX_SIZE=3;//定义矩阵的行列数
int* pointerarray[MAX_SIZE];//定义一个指针数组
int i;
for(i=0;i<MAX_SIZE;i++)
{
int myarray[MAX_SIZE];//给每个单元再定义一个整型数组
init_array(myarray,MAX_SIZE);//初始化这个数组 令里面的值全部为0
pointerarray[i]=myarray;//把这个数组插入到这个指针数组的相应单元内
}
int p;
for ( p = 0 ; p < MAX_SIZE ; p++ )
{
print_array(pointerarray[p],MAX_SIZE);//打印出某一单元中的整形数组里面的数值
printf("\n") ;
}
free(pointerarray);
system("pause");

}

...全文
146 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
logiciel 2009-10-29
  • 打赏
  • 举报
回复
修改如下:


int main()
{
int MAX_SIZE=3;//定义矩阵的行列数
int **pointerarray;//定义一个指针数组
int i;
pointerarray = (int **)malloc(sizeof(int *)*MAX_SIZE);
for(i=0;i<MAX_SIZE;i++)
{
int *myarray;//给每个单元再定义一个整型数组
myarray = (int *)malloc(sizeof(int)*MAX_SIZE);
init_array(myarray,MAX_SIZE);//初始化这个数组 令里面的值全部为0
pointerarray[i]=myarray;//把这个数组插入到这个指针数组的相应单元内
}
int p;
for ( p = 0 ; p < MAX_SIZE ; p++ )
{
print_array(pointerarray[p],MAX_SIZE);//打印出某一单元中的整形数组里面的数值
printf("\n") ;
}
for(i=0;i<MAX_SIZE;i++)
{
free(pointerarray[i]);
}
free(pointerarray);
system("pause");
return 0;
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧