当前位置:首页 » 编程语言 » c语言多维数组

c语言多维数组

发布时间: 2022-01-25 17:53:26

‘壹’ c语言二维数组怎么表示

int a[m][n];//就表示一个m行n列的整型二维数组

在c语言中数组的下标是从0开始的所以,数组a的元素个数可以表示为:a[0][0]-a[m-1][n-1]

例如:

#include<stdio.h>
intmain()
{
inta[3][2],i,j;//定义一个3行2列的整型二维数组a

for(i=0;i<3;i++)//依次给二维数组赋值
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
printf(" ");
for(i=0;i<3;i++){//输出二维数组
for(j=0;j<2;j++)
printf("%d",a[i][j]);
printf(" ");
}
return0;
}
/*
运行结果:
12
34
45

12
34
45
*/

‘贰’ C语言中是否存在多维数组

多维数组只是一种说法,其实只不过是特殊的一维数组而已。只是说,这个特殊的一维数组的每个元素的类型不是常规的int、float等这些基本类型。而是obj这些特殊的类型。

‘叁’ C语言多维数组

&multi[0]不等于multi[0],
multi也不等于multi[0],
multi[0]是一维指针。
multi是一个二维指针。
multi[0][0]表示一个具体的int值。
你用%u输出的结果实际上都是输出了multi[0][0]的值。

‘肆’ C语言二维数组

表达式a[0]+1是地址,a[0]占2字节 1占2字节 总共4字节,;p是一个指向整形数的指针,而a 是二维数组的首地址,看懂意思就知道为什么了!!!

‘伍’ C语言 二维数组

/***用二维数组保存学生成绩****/
#include"stdio.h"
#define M 100
main()
{ int i,a[M][2],n,c=0,m=0,max,min;
printf("请输入学生记录数:");
scanf("%d",&n);
/*********输入每个学生的成绩保存在数组中*********/
for(i=0;i<n;i++)
{printf("请输入第%d学生的记录\n",i+1);
printf("请输入语文成绩:");
scanf("%d",&a[i][0]);
printf("请输入数学成绩:");
scanf("%d",&a[i][1]);
printf("\n"); }
/********各课总成绩********************/
for(i=0;i<n;i++)
{c+=a[i][0];
m+=a[i][1];
}
printf("语文总成绩:%d\n",c);
printf("数学总成绩:%d\n",m);
printf("语文平均成绩:%f\n",(float)(c)/n);
printf("数学平均成绩:%f\n\n",(float)(m)/n);
/**********输出成绩单*********/
for(i=0;i<n;i++)
{printf("第%d个学生:语文成绩%d 数学成绩%d\n",i+1,a[i][0],a[i][1]);
}
getch();
}

‘陆’ C语言如何创建多维数组

什么意思?
能具体点吗?
其实,和一维的不是一样的嘛,
多维的,就是将一维的,比如,你建一个一维的长12的整型数组,
完全可以看成是长3宽4的二维数组啊,
如果你想实现动态的话,我想到有二种方法,
一种,你用宏弄一个比较大的数组,然后用变量来标其有效部分.
另一种,可以根据你所要创建的大小动态的malloc.这个,就要先了解要建的大小.如果重新建的话,要free原来的,新分配新的空间.

‘柒’ c语言中二维数组的定义

二维数组定义的一般形式是:
类型说明符 数组名[常量表达式1][常量表达式2]
其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度

int a[3][4];

‘捌’ C语言的多维数组怎么嵌套定义,以及怎么赋值

1、使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。

2、例程,分配3行4列二维数组:

#include<stdio.h>
#include<malloc.h>
intmain()
{
int**a;
inti,j;
a=(int**)malloc(sizeof(int*)*3);//为二维数组分配3行
for(i=0;i<3;++i){//为每列分配4个大小空间
a[i]=(int*)malloc(sizeof(int)*4);
}
//初始化
for(i=0;i<3;++i){
for(j=0;j<4;++j){
a[i][j]=i+j;
}
}
//输出测试
for(i=0;i<3;++i){
for(j=0;j<4;++j){
printf("%d",a[i][j]);
}
printf(" ");
}
//释放动态开辟的空间
for(i=0;i<3;++i){
free(a[i]);
}
free(a);
return0;
}
/*
输出:
0123
1234
2345
*/

‘玖’ C语言中,多维数组和多个数组,哪一种更效率

如果你学过编译了你就知道多维数组的访问比一位数组在编译时要更加复杂,在符号表中需要保存的内情向量也会跟大。就用你给出的例子说明:a[i][j]实际对应的内存偏移地址是由base(a)+(i*array(a,1)+j)*sizeof(a)这个公式计算得来的。其中base(a)表示数组a的基地址,而array(a,1)表示数组a的一维维度大小。而b[i]对应的偏移地址则是由base(b)+i*sizeof(b)。而对数组元素的访问实际就是对数组元素所对应的内存偏移地址的访问。由此可见数组每多一维,在访问其变量时就得多做一次乘法,并且编译后生成的中间代码也会更长,效率自然要低。
但是,我个人推荐没有必要非得为这点效率而回避多维数组。其一,是因为在连续访问多维数组时,你的编译器会为你做优化,从而大大提高访问效率,优化后的效率损失可以忽略不计。其次,如果数组是在堆上分配的,那就是一片连续的内存空间。比几片零散的空间更加规整。再者,如果你写有关多维矩阵的程序。固执的使用低维数组会大大增加程序复杂度并降低可读性,甚至效率反而会降低。总之,我们还是不要捡了芝麻,丢了西瓜的好。

热点内容
dhcp服务器如何更新ip地址 发布:2024-11-15 23:18:40 浏览:125
ai清除缓存 发布:2024-11-15 23:12:38 浏览:602
电脑版我的世界如何退出服务器 发布:2024-11-15 23:00:39 浏览:312
哪里有存储器零售商 发布:2024-11-15 22:55:42 浏览:46
手机如何设置锁屏密码个性 发布:2024-11-15 22:44:08 浏览:417
mysql导入存储过程 发布:2024-11-15 22:43:18 浏览:638
net连接数据库代码 发布:2024-11-15 22:40:16 浏览:61
编程计算nk 发布:2024-11-15 22:35:07 浏览:833
数据库第一章 发布:2024-11-15 22:27:07 浏览:593
测试php性能工具 发布:2024-11-15 22:19:37 浏览:580