讨论:如何动态申请一个二维数组

qiuzhizhe 2009-07-20 01:51:09
自己先共享一个:



代码:分配一个M×N的数组。

#include "stdio.h"
#include "string.h"
#include "stdlib.h"

#define M (3)
#define N (4)




void main(void)
{

int i=0;
int j=0;
int (*p)[N]=NULL; //定义一个数组指针



/*在堆里分配空间,将void地址转为指向二维数组的指针(这里没有检查)。*/
p=(int (*)[N])malloc(M*N*sizeof(int));



for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
p[i][j]=(i+1)*10+(j+1); //对数组访问
printf("\np[%u][%u]=%d\n",i,j,p[i][j]);
}
}



free(p);


}



结果为:
p[0][0]=11

p[0][1]=12

p[0][2]=13

p[0][3]=14

p[1][0]=21

p[1][1]=22

p[1][2]=23

p[1][3]=24

p[2][0]=31

p[2][1]=32

p[2][2]=33

p[2][3]=34
Press any key to continue


...全文
122 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangbinping 2009-07-28
  • 打赏
  • 举报
回复
不明白LZ在干什么
yangyunzhao 2009-07-20
  • 打赏
  • 举报
回复
一般都用vector了
bxl1989 2009-07-20
  • 打赏
  • 举报
回复
谢了,对新手有些帮助。
kondykuang 2009-07-20
  • 打赏
  • 举报
回复
int   **HelixMat;        //Dynamic 2 dimension Array   
HelixMat=new int*[n];
for( i=0;i<n;i++)
HelixMat[i]=new int[n];
//del:
for( i=0;i<n;i++)
delete [] HelixMat[i];

delete [] HelixMat ;
kondykuang 2009-07-20
  • 打赏
  • 举报
回复
int   **HelixMat;        //Dynamic 2 dimension Array   
HelixMat=new int*[n];
for( i=0;i<n;i++)
HelixMat[i]=new int[n];
//del:
for( i=0;i<n;i++)
delete [] HelixMat[i];

delete [] HelixMat ;
jinzonghui 2009-07-20
  • 打赏
  • 举报
回复
申请了空间就能自己用了。
jinzonghui 2009-07-20
  • 打赏
  • 举报
回复
申请了空间就能自己用了。
pengzhixi 2009-07-20
  • 打赏
  • 举报
回复
顶一个!
DarkChampion 2009-07-20
  • 打赏
  • 举报
回复
一次性申请M*N的空间,自己想怎么操作就怎么操作
weidong0210 2009-07-20
  • 打赏
  • 举报
回复
要做什么?

69,373

社区成员

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

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