this function is giving value 10 after modification in main but when printed in fun(), it is giving modified value… how is this happening??
#include<stdio.h>
#include<conio.h>
void fun(const int *s)
{
printf("In this function %d\n",*s);
}
int main()
{
const int a = 10;
int *p = (int*)&a;
printf("before modification a=%d\n",a);
*(int*)&a = 12;
printf("after modification a=%d\n",a);
fun(&a);
getch();
return 0;
}
1 Like
This is not an answer, just observation.
It seems, that you somehow change value of p
#include<stdio.h>
void fun(const int *s)
{
printf("In this function %d\n",*s);
}
int main()
{
const int a = 10;
int *p = (int*)&a; // const int* to int*
printf("before modification a=%d\n",a);
*(int*)&a = 12;
printf("after modification a=%d\n",a);
printf("after modification p=%d\n",*p);
fun(&a);
//getch();
return 0;
}
C/C++ is magical…
My gcc version
gcc version 4.5.3 (GCC)
Here are IdeOne results: