Output of the Program | Pointer to a Constant or Constant Pointer?
Last Updated :
21 Jun, 2022
Predict the output of the below program.
C++
#include <iostream>
using namespace std;
int main()
{
int x = 5;
int * const ptr = &x;
++(*ptr);
cout << x;
return 0;
}
|
C
#include <stdio.h>
int main()
{
int x = 5;
int * const ptr = &x;
++(*ptr);
printf ( "%d" , x);
getchar ();
return 0;
}
|
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 <iostream>
using namespace std;
int main()
{
int x = 5;
int const * ptr = &x;
++(*ptr);
cout << x;
return 0;
}
|
C
int main()
{
int x = 5;
int const * ptr = &x;
++(*ptr);
printf ( "%d" , x);
getchar ();
return 0;
}
|
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...