Output of the Program | Pointer to a Constant or Constant Pointer?

Predict the output of the below program.

filter_none

edit
close

play_arrow

link
brightness_4
code

int main()
{
    int x = 5;
    int * const ptr = &x;
    ++(*ptr);
    printf("%d", x);
         
    getchar();
    return 0;   
}

chevron_right


Output: 6

Explananation:
See following declarations to know the difference between constant pointer and a pointer to a constant.

int * const ptr —> ptr is constant pointer. You can change the value at the location pointed by pointer p, but you can not change p to point to other location.

int const * ptr —> ptr is a pointer to a constant. You can change ptr to point other variable. But you cannot change the value pointed by ptr.

Therefore above program works well because we have a constant pointer and we are not changing ptr to point to any other location. We are only icrementing value pointed by ptr.

Try below program, you will get compiler error.

filter_none

edit
close

play_arrow

link
brightness_4
code

int main()
{
    int x = 5;
    int const * ptr = &x;
    ++(*ptr);
    printf("%d", x);
        
    getchar();
    return 0;  
}

chevron_right




My Personal Notes arrow_drop_up


Article Tags :

6


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.