簡體   English   中英

接下來如何輸出?

[英]How the output is possible in the following?

'#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?

根據運算符優先級規則*(a+i)[j]將被解析為*((a + i)[j]) ,最終等同於*( *(a + i + j) ) 因此,對於i = 1j = 1 ,它將是*( *(a + 1 + 1) ) = *( *( a + 2) + 0) = a[2][0]

在給定的圖像中,它具有3*2矩陣,即3行和2 2行。

*(arr+1)[1]可以這樣解釋:

arr+1給出第二行第一元素的地址。

(arr+1)[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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM