确定3d数组中行元素的差异

时间:2014-08-25 13:42:54

标签: c arrays multidimensional-array

我需要知道是否有3 d数组说:

int a[2][3][2]={{{1,2},{9,8},{3,7}},{{2,2},{1,4},{5,4}}};

表达式[1] -a [0]如何计算?

3 个答案:

答案 0 :(得分:0)

  

表达式[1] -a [0]计算什么?

如果用作arithemtic运算符a[1]的运算符,它会计算a[0]-衰减的指针之间的差异。

答案 1 :(得分:0)

#include <stdio.h>

int main(void){
    int a[2][3][2]={{{1,2},{9,8},{3,7}},{{2,2},{1,4},{5,4}}};
    printf("%d\n", (int)(a[1]-a[0]));//3
    int (*b1)[2] = a[1];//b1 point to {1,2}
    int (*b0)[2] = a[0];//b0 point to {2,2}
    printf("%d\n", (int)(b1-b0));//3
    printf("%d\n", (int)(&a[1]-&a[0]));//1

    return 0;
}
/*
int a[2][3][2]
a <-> int (*)[3][2]
a[n] <-> int [3][2] <-> int (*)[2]
&a[n] <-> int (*)[3][2]
*/

答案 2 :(得分:-3)

始终将多维数组视为网格/表格。
这是相同的阵列分为几个部分:

a [2] =包含2个2D阵列的容器
 [3] =包含3个阵列的容器
 [2] =实际数据值

您正在访问的数据取决于调用阵列时放置的括号数量,例如:

a [1] = {{2,2},{1,4},{5,4}}
a [1] [1] = {1,4} a [1] [1] [1] = 4

表达式a [1] - a [0]无法完成,因为您正在使用另一个数组减去数组,这意味着您使用的是指向数据的对象,而不是实际数据。但是,它确实评估为:

a [1] = {{2,2},{1,4},{5,4}}和
a [0] = {{1,2},{9,8},{3,7}}所以,
{{2,2},{1,4},{5,4}} - {{1,2},{9,8},{3,7}}