简体   繁体   中英

Pointer to pointer dereference with pre-increment operator

The following program gives output as 17,29,45; I can't understand what does **++pp; mean. Can anyone explain the program in detail.

    #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]);
    }

In your code, **++pp; is the same as * (* ( ++pp)); . It first increments the pointer, then deferences twice ( the first dereference result is of pointer type, to be elaborate ).

However, the value obtained by dereferencing is not used. If you have compiler warnings enabled, you'll get to see something like

warning: value computed is not used

You can remove the dereferencing, it's no use.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM