Open In App

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

Last Updated : 21 Jun, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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;
}
 
// This code is contributed by sarajadhav12052009


C




#include <stdio.h>
 
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 <iostream>
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; 
}




Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads