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

• Difficulty Level : Easy
• Last Updated : 21 Jun, 2022

Predict the output of the below program.

## C++

 `#include ` `using` `namespace` `std;`   `int` `main() ` `{` `    ``int` `x = 5;` `    ``int` `* ``const` `ptr = &x;` `    ``++(*ptr);` `  `  `    ``cout << x;` `    ``return` `0;` `}`   `// This code is contributed by sarajadhav12052009`

## C

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

Output

`6`

Explanation:
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 incrementing value pointed by ptr.
Try below program, you will get compiler error.

## C++

 `#include ` `using` `namespace` `std;`   `int` `main() ` `{` `    ``int` `x = 5;` `  `  `    ``int` `const` `* ptr = &x;` `    ``++(*ptr);` `  `  `    ``cout << x;`   `    ``return` `0; ` `}`   `// This code is contributed by sarajadhav12052009`

## C

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

My Personal Notes arrow_drop_up
Related Articles