C Programming - Const - Discussion
Discussion Forum : Const - Find Output of Program (Q.No. 4)
4.
What will be the output of the program?
#include<stdio.h>
int main()
{
const int x=5;
const int *ptrx;
ptrx = &x;
*ptrx = 10;
printf("%d\n", x);
return 0;
}
Answer: Option
Explanation:
Step 1: const int x=5; The constant variable x is declared as an integer data type and initialized with value '5'.
Step 2: const int *ptrx; The constant variable ptrx is declared as an integer pointer.
Step 3: ptrx = &x; The address of the constant variable x is assigned to integer pointer variable ptrx.
Step 4: *ptrx = 10; Here we are indirectly trying to change the value of the constant vaiable x. This will result in an error.
To change the value of const variable x we have to use *(int *)&x = 10;
Discussion:
18 comments Page 1 of 2.
Prudhvi said:
1 decade ago
Any one give me a clear explanation to step 4.
Hari said:
1 decade ago
I also don't think step 4 willl work how can it will try to change the value of x answer is 5.
Martyf said:
1 decade ago
It is very difficult paper.
Prakash said:
1 decade ago
int main()
{
int x=5;
int *ptrx;
ptrx = &x;
*ptrx = 10;
printf("%d\n", x);
return 0;
}
To change the value of const variable x we have to use *(int *)&x = 10;
{
int x=5;
int *ptrx;
ptrx = &x;
*ptrx = 10;
printf("%d\n", x);
return 0;
}
To change the value of const variable x we have to use *(int *)&x = 10;
Bijay said:
1 decade ago
In gcc compiler it will work o/p:10.
Voski said:
1 decade ago
A small correction in the Explanation Step 2 is needed: ptrx is not a constant, but a pointer to an integer constant.
Logeswari said:
1 decade ago
1)const x is declared as integer and assign the value 5.
2)const ptrx value declared as integer point.
3)ptrx=&x mean ptrx contain address of x which mean *ptrx contain x value 5.
4)then *ptrx=10 mean indirectly change the value of 5 know.
So its wrong.
If any wrong in above statement means please any one clear me.
2)const ptrx value declared as integer point.
3)ptrx=&x mean ptrx contain address of x which mean *ptrx contain x value 5.
4)then *ptrx=10 mean indirectly change the value of 5 know.
So its wrong.
If any wrong in above statement means please any one clear me.
Charan said:
10 years ago
How we can change const variable by using *(int *)&x = 10; (mentioned in explanation). However it is not allowing to change from 5 to 10. But no error also raising.
Hotcpu said:
9 years ago
This is an undefined behavior by casting away the const definition. However, it will not work in g++ 4.1+.
Shiva kumar said:
9 years ago
Using pointers we can change any kind it of data.
Even if it is constant variable also. That is why there is no security in C.
Even if it is constant variable also. That is why there is no security in C.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers