当前位置:首页 > 内存 > 正文

二维数组动态内存申请

  • 内存
  • 2024-06-01 20:54:40
  • 3611

一、c++动态申请二维数组对于二维数组来说,可以看成是由行指针和列指针确定的矩阵。
char**p;
p=(char**)malloc(sizeof(char*)*n);//(为n行向量开辟内存空间)
for(i=0;ip[i]=(char*)malloc(sizeof(char)*m);(每行为m个元素开辟内存空间)


二、C语言申请动态2维数组两种方式:
1.转换并应用于一维数组。
2.首先应用于所有行起始指针,然后逐行应用。
1.>a=(int*)malloc(sizeof(int),(unsigned)m*n);
用法与一般二维数组相同。
这是一个例子。
#include"stdlib.h"
#include"stdio.h"
#include
intmain()
{
inti,j;
int(*p)[10];
//动态生成二维数组格式相当于p[10]如果要改[10],如果要定义n行2列,则需要指定p=(int(*)[2])malloc(n*2*)等参数。sizeof(int));
p=(int(*)[10])malloc(10*10*sizeof(int));
for(i=0;i<10);i++)
for(j=0;j<10;j++)
p[i][j]=i*j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
printf("%d,",p[i][j]);
printf("\n");
}
free(p);
return0;
}
2.
这是一个例子。
#include
#include
main()
{
inti=0;
intj=0;
intline=0;
introw=0;
int**p=NULL;
printf("inputtherowofthearray:\n");
scanf("%d",&line);
printf("inputtherowofthearray:\n");
scanf("%d",&row);
p=(int);**)malloc(sizeof(int*)*line);
if(NULL==p)
{
return;
}
for(i=0;i{
*(p+i)=(int*)malloc(sizeof(int)*row);
if(NULL==*(p+i))
{
return;
}
}
/*inputdata*/
for(i=0;i{
for(j=0;j{
p[i][j]=i+1;
}
}
/*输出数据*/
for(i=0;i{
for(j=0;j{
printf("%d",p[i][j]);
}
}
/*freeeverylinepoint*/
for(i=0;i{
free(*(p+i));
p[i]=NULL;
}
free(p);
p=NULL;
}
第一种方法是创建和释放数组的相对简单的方法。。