如何动态创建和使用二维数组
发布网友
发布时间:2022-04-21 09:45
我来回答
共2个回答
懂视网
时间:2022-05-18 23:09
本文实例讲述了JavaScript动态创建二维数组的方法。分享给大家供大家参考,具体如下:
学过C语言的我太耿直
一般这种情况下我会直接
var arr = new Array[10][10];
但是不出意外的话这样是会报错的,因为在js中根本没有这样的语法
在这之前,让我们先来回顾一下js中是怎么样创建一维数组的:
使用数组直接量,这个是最简单的,在方括号内将数组元素用逗号隔开即可:
var arr = [ ]; //空数组
var s = [1,2,3,4]; //4个元素的数组
var n = [1.1, false, "a", ]; //3个不同类型的元素和结尾的逗号
这样看来一维数组还是各种语言都通用的,Javascript不支持真正的多维数组,但可以用数组的数组来近似。访问数组的数组中的元素,只要简要地使用两次[ ]操作符即可。例如:
var arr = new Array(10); //表格有10行
for(var i = 0;i < arr.length; i++){
arr[i] = new Array(10); //每行有10列
}
这样,一个神奇的有10行10列的数组就创建完成了。
补充:JS生成二维数组完整操作示例:
var arr = [];
var n=1;
for(var i = 0;i < 10; i++){
arr[i] = []; //每行有10列
for(var j = 0;j < 10; j++){
arr[i][j] = n;
n++;
}
}
console.log(arr);
这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,可得如下运行结果:
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
热心网友
时间:2022-05-18 20:17
两种方法:
1.转化为一维数组申请
2.先申请全部行首指针,再按行逐行申请
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;i<n;i++)
for(j=0;j<10;j++)
p[i][j]=i*j;
for(i=0;i<n;i++)
{
for(j=0;j<10;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;
}
第一种方法数组创建和释放都比较简单