已知: int a[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; int (*p)[4] = a; 则表达式 *(*(p + 2) + 1) 的值为( )。
A:6
B:10
C:9
D:11
正确答案:B
答案解析
1. 理解 a 的类型:a 是一个 3 行 4 列的二维整型数组,内存中按行连续存储。2. 分析 p 的定义:p 是指向含有 4 个整型元素的一维数组的指针,即 p 指向 a 的第 0 行。3. 计算 p + 2:p 偏移 2 个单位,每个单位为 4 个 int 大小,因此 p + 2 指向 a 的第 2 行首地址。4. 计算 *(p + 2):解引用得到第 2 行的首地址所指向的内容,即该行第 0 个元素的地址。5. 计算 (p + 2) + 1:在第 2 行的基础上加 1,指向该行第 1 个元素的地址。6. 计算 *(*(p + 2) + 1):对最终地址解引用,取得对应位置的整数值。
试卷来源:202603 CCF-GESP编程能力等级认证C++四级真题