重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
两种方法:
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的都匀网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
转化为一维数组申请
先申请全部行首指针,再按行逐行申请
1、方法一:
a=(int *)malloc(sizeof(int),(unsigned)m*n);
使用的时候就和一般的二维数组一样。
举个例子给你:
#include "stdlib.h"
#include "stdio.h"
#include malloc.h
int main()
{
int i,j;
int n;//这个就是需要指定的行数
int (*p)[10];
scanf("%d",n);//取得行数
//动态生成二维数组,指定列数为10,如果想改,自己该里面
的参数,如果想定义n行2列就为: p=(int (*)[2])malloc(n*2*sizeof(int));
p=(int (*)[10])malloc(n*10*sizeof(int)); //动态申请n行10列的二维数组
for(i=0;in;i++)
for(j=0;j10;j++)
p[i][j]=i*j;
for(i=0;in;i++)
{
for(j=0;j10;j++)
printf("%d,",p[i][j]);
printf("\n");
}
free(p);
return 0;
}
2、方法二:
#include stdio.h
#include malloc.h
main()
{
int i = 0;
int j = 0;
int line = 0;
int row = 0;
int **p = NULL;
printf("input the line of the array:\n");
scanf("%d", line);
printf("input the row of the array:\n");
scanf("%d", row);
p = (int **)malloc(sizeof(int *) * line);
if (NULL == p)
{
return;
}
for (i = 0; i line; i++)
{
*(p + i) = (int *)malloc(sizeof(int) * row);
if (NULL == *(p + i))
{
return;
}
}
/*input data*/
for (i = 0; i line; i++)
{
for(j = 0; j row; j++)
{
p[i][j] = i + 1;
}
}
/*output data*/
for (i = 0; i line; i++)
{
for(j = 0; j row; j++)
{
printf("%d", p[i][j]);
}
}
/*free every line point*/
for (i = 0; i line; i++)
{
free(*(p + i));
p[i] = NULL;
}
free(p);
p = NULL;
}
c语言定义数组的方法是:C语言中,同变量一样;数组也必须先定义后使用。一维数组的定义形式。
1、类型标识符,数组名[常量表达式];例如int a[10];其中a为地址常量。
2、如变量的定义一样,inta;double a;floata等;数组的定义只是把后面的变量名改为数组名而已。
3、int a[10]就是定义了一个数组名为a的数组;此数组有10个元素。其中各元素从a[0]到a[9];并没有a[10]元素。
动态数组:void creat(linklist L)
{
int x;
L=new Lnode;
linklist p,u;
p=L;
cout"请输入一些有序的整数,以负数结束:"endl;
cout"请输入一个整数:"endl;
cinx;
while(x0)
{u=new Lnode;
u-data=x;
p-next=u;
p=p-next;
cinx;
}
p-next=NULL;
} 静态数组:int iArray[10]={1,1,2,3,5,8,13,21,34,55); //初始化
void main()
{
//...
}