首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于动态数组的创建与函数调用,该怎么解决

2012-04-25 
关于动态数组的创建与函数调用#includestdio.h#includestdlib.hvoid Move2DArray(int ***a,int row,in

关于动态数组的创建与函数调用
#include<stdio.h>
#include<stdlib.h>

void Move2DArray(int ***a,int row,int col)
{
  int i;
  *a=(int *)malloc(row*sizeof(int));
  for(i=0;i<col;i++)
  {
  a[i]=(int *)malloc(col*sizeof(int));
  }
}
void KK(int ***a,int row,int col)
{
  int i,j;
  for(i=0;i<row;i++)
  for(j=0;j<col;j++)
  {
  a[i][j]=i+j;
  printf("%d",a[i][j]);
  }
}

void main()
{
  int row=5,col=5, **a;
  Move2DArray(&a,row,col);
  KK(&a,row,col); getch();
}

———————————————————————————————————————————————————————
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef int ElemType;
typedef struct{
  int row;
  int col;
  ElemType e;
}Trpie;

typedef struct{
  Trpie data[MaxSize];
  int rows;
  int cols;
  int nums;
}table;

void Move2DArray(int ***a,int row,int col)
{
  int i;
  *a=(int *)malloc(row*sizeof(int));
  for(i=0;i<col;i++)
  {
  a[i]=(int *)malloc(col*sizeof(int));
  }
}

void Creat(table *t,int ***a,int row,int col)
{
  int i,j;
  t->rows=row;
  t->cols=col;
  t->nums=0;
  for(i=0;i<row;i++)
  {
  for(j=0;j<col;j++)
  {
  if(a[i][j]!=0)
  {
  t->nums++;
  t->data[t->nums].row=i+1;
  t->data[t->nums].col=j+1;
  t->data[t->nums].e=a[i][j];
  }
  }
  }

}
void dispt(table t)
{
  int i;
  if(t.nums<=0)
  return ;
  for(i=1;i<=t.nums;i++)
  printf("%4d%4d%4d\n",t.data[i].row,t.data[i].col,t.data[i].e);
}


void main()
{
  table t,q;
  int row=3,col=4, **a,i,j;
  Move2DArray(&a,row,col);
  for(i=0;i<row;i++)
  for(j=0;j<col;j++)
  {
  a[i][j]=i+j;
  printf("%d\n",a[i][j]);
  }
  Creat(&t,&a,row,col); dispt(t);
  getch();
}


看标了颜色的部分,对于动态建立数组的实质不懂,还有调用过程的变量传递不懂,望高手指教!谢谢!

[解决办法]
感觉你把那个3级指针改掉,会靠谱得多。

到目前为止,二级指针我只用过不超过5次,三级指针根本没碰过。
[解决办法]

探讨
感觉你把那个3级指针改掉,会靠谱得多。

到目前为止,二级指针我只用过不超过5次,三级指针根本没碰过。

[解决办法]
C/C++ code
void fun(int ***p, int m, int n){    *p = (int**)malloc(sizeof(int*)*m);    for (int i=0; i<m; ++i)        (*p)[i] = (int*)malloc(sizeof(int)*n);}int **arr = NULL;    fun(&arr, 2, 3); 

热点排行