2016-07-27 67 views
0

以下程序給出的輸出爲17,29,45;我不明白**++pp;是什麼意思。任何人都可以詳細解釋程序。指針指向預增值運算符的指針取消引用

#include <stdio.h> 

    int main() { 
     static int a[] = {10, 22, 17, 29, 45}; 
     static int *p[] = {a, a + 2, a + 1, a + 4, a + 3}; 
     int **pp = p; 
     **++pp; 
     printf("%d %d %d", **pp, *pp[3], pp[0][2]); 
    } 

回答

3

在你的代碼,**++pp;是一樣的* (* (++pp));。它首先增加指針,然後推遲兩次(第一次解除引用結果是指針類型,詳細說明)。

但是,不使用通過解引用獲得的值。如果你啓用了編譯器警告,你能看到類似

警告:計算值不用於

您可以刪除反引用,也沒有用。

+0

提示downvote的原因是什麼? –

+0

當我評論這條語句時,輸出會受到影響 –

+1

@NikhilVerma我並不是要求將語句註釋掉,而是使用'++ pp;'來取消引用,您將得到相同的結果。 –