C语言三维数组(本人新手)

#include<stdio.h>
void main()
{
int a[][][]={{{1,2,3},{5,8,9}},{5,1,2},{5,6,9},55};
printf(a[1][1][1]+a[2]);
}
为什么没有通过?

第1个回答  推荐于2017-09-26
要数组指定大小
int a[x][y][z],x可以省略,y和z不能省略本回答被提问者采纳
第2个回答  2015-01-07
输出格式没有,就是printf("%d",......),后面的输出表达式也不对,三维数组表示方法不正确,你想输出啥
第3个回答  2015-01-07

……………………………………………………………………

楼主,你真的明白什么叫做三维数组吗?

你之前不是学C的吧?看这个样子应该是学的脚本语言?PHP还是Python?或者说是ruby?


总之有一点需要注意


int a[]

这个里面,a 的类型是 int[],a[0]的类型是int

int a[][]

这个里面,a 的类型是 int[][],a[0]的类型是int[],a[0][0]的类型是int

int a[][][]

这个里面,a 的类型是 int[][][],a[0]的类型是int[][],a[0][0]的类型是int[],a[0][0][0]的类型才是int


你初始化的时候是这么写的:

int a[][][] = {
    {
        {1, 2, 3},
        {5, 8, 9}
    },
    { 5, 1, 2 },
    { 5, 6, 9 },
    55
};

……你不感觉奇怪吗?

a的第一个元素确实是int[][]型,第二第三个怎么就成了int[]型了?第四个干脆直接成了int型……


并且最主要的最主要……C语言的数组需要一个长度!并且必须是常量的长度!否则你只能使用指针!

相似回答