【发布时间】:2021-05-10 12:11:48
【问题描述】:
对于数组的以下值,我可以这样做:
array[i][j][k] = *(*(*(array+i)+j)+k);
---------------------------------
int xar[3] = {1,2,3};
printf("%d | %d\n", xar[1], *(xar+1));
int xar2[2][3] = {{1,2,3}, {4,5,6}};
printf("%d | %d\n", xar2[1][2], *(*(xar2+1)+2));
int xar3[2][2][2] = {
{{1, 2},{3, 4}},
{{5, 6}, {7, 8}}
};
printf("%d | %d\n", xar3[1][1][1], *(*(*(xar3+1)+1)+1));
2 | 2
6 | 6
8 | 8
但是,我在尝试获取数组元素的地址以及为什么这样做时遇到了困难,例如,如果我有:
&array[i][j][k];
array+i 给了我相当于 &array[i] 的效果,但是我该如何获取完整的内部物品呢?
【问题讨论】:
-
*(*(array+i)+j)+k -
删除第一个
* -
@ChrisDodd 好的,但你能解释一下它是如何工作的吗?
-
是的,现在听起来是对的,但请注意,周围可能有一些骗子。