'#include <stdio.h>
int main()
{
short arr[3][2]={3, 6, 9, 12, 15, 18};
printf("%d %d", *(arr + 1)[1], **(arr + 2));
}'
该程序的输出是15,15?
答案 0 :(得分:0)
根据运算符优先级规则*(a+i)[j]
将被解析为*((a + i)[j])
,最终等同于*( *(a + i + j) )
。因此,对于i = 1
和j = 1
,它将是*( *(a + 1 + 1) ) = *( *( a + 2) + 0) = a[2][0]
答案 1 :(得分:-2)
在给出的图像中,它有一个3*2
矩阵,即3行和2行。
*(arr+1)[1]
可以这样解释:
arr+1
给出第2行第1个元素的地址。
(arr+1)[1]
给出第3行第1个元素的地址。
*(arr+1)[1]
给出此地址的值
以下是示例:
void main(){
short arr[3][2]={3,6,9,12,15,18};
printf("%d %d %d %d", (arr ),(arr+1),(arr+1)[1],(arr +2));
}
输出:
-977229152 -977229148 -977229144 -977229144