⑴ 求c语言关于多维数组的详细讲解,急!!!
每一个[]代表一个方向 当然三维以上的数组不太容易用实体模式想象 但大概方式是一样的
先搞明白1 2 3维对应于下标的方式 指针 地址的对应关系
比如对于int a[2][3][4]而言
a[1] a[1][1] a[1][1][1] a[1][1][3] a[1][2][0]
搞清以上几项的地址关系
组数基本我们可以按行读来理解[具体对应于代码]
即 1维 从左向右读
2维 a[2][3] 从左向右工a[][0]~a[][2] 3格 成为一行 每一行对应一个a[]
三维a[4][2][3]的在此基础上增加到4个层面 (原来的2维对应为2*3格的一个面)
⑵ C语言多维数组
&multi[0]不等于multi[0],
multi也不等于multi[0],
multi[0]是一维指针。
multi是一个二维指针。
multi[0][0]表示一个具体的int值。
你用%u输出的结果实际上都是输出了multi[0][0]的值。
⑶ C语言关于多维数组的问题;字幅有限;请看问题补充;谢谢了
数组的输入输出格式不是固定的,是要自己具体定义的,也就是说,既可以按行输出,也可以按列输出,也可以按对角线输出~~~等等,当然,它的确是按行存储的,由上至下先存储完第一行的所有元素,接着再存储下一行的所有元素,你举的程序例子是按行输出的,但就像楼上所说的,是无法通过编译的,因为你没有指明你要输出的数组元素,编译器是会报错的,把这个语句printf(%3d);换成printf("%3d",a[i][j]);就可以了~~~
⑷ C语言如何输入输出多维字符串数组问题
直接
printf("%s \n", str[0]);
printf("%s \n", str[1]);
printf("%s \n", str[2]);
⑸ 如何动态构建多维数组(c语言)
两种方法:
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;
}
第一种方法数组创建和释放都比较简单
⑹ c语言程序设计(输入一个数n,输出一个n维数组)
#include <stdio.h>
int main(void)
{
int n,i,*p;
printf("请输入一个整数:");
scanf("%d",&n);
p=new int[n];
for(i=0;i<n;i++)
*(p+i)=i;
for(i=0;i<n;i++)
printf("%d ",*(p+i));
putchar('\n');
delete []p;
return (0);
}