我需要知道是否有3 d数组说:
int a[2][3][2]={{{1,2},{9,8},{3,7}},{{2,2},{1,4},{5,4}}};
表达式[1] -a [0]如何计算?
答案 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}}