在以下程序片段的上下文中,选择最佳答案。
null
#include "stdio.h" int arr[10][10][10]; int main() { arr[5][5][5] = 123; return 0; } |
以下哪种printf语句能够打印arr[5][5]
(i) printf ( "%d" ,arr[5][5][5]); (ii) printf ( "%d" ,*(*(*(arr+5)+5)+5)); (iii) printf ( "%d" ,(*(*(arr+5)+5))[5]); (iv) printf ( "%d" ,*((*(arr+5))[5]+5)); |
(A) 只有(我)会编译和打印123。 (B) (i)和(ii)都将编译并打印123。 (C) 只有(i)、(ii)和(iii)会编辑,但只有(i)和(ii)会打印123。 (D) 只有(i)、(ii)和(iii)将进行编辑,三者都将打印123。 (E) 所有(i)、(ii)、(iii)和(iv)将进行编辑,但只有(i)和(ii)将打印123。 所有(i)、(ii)、(iii)和(iv)将进行编译,所有将打印123。 答复: 说明: 对于数组,我们可以将数组下标运算符[]转换为具有适当偏移量的指针差异运算符*。这意味着arr[x]等于*(arr+x)。基本上,这两者是可以互换的。同样的概念也适用于多维数组。
这就是为什么上述4个printf都指同一个元素,即。 arr[5][5][5] 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END