Hi, Consider ,the following code unsigned int num =10; unsigned int * ptr = # however,When i look into ptr ,the address stored in "ptr" IS NOT EQUAL to the ADDRESS of num.. I know this seems to be strange,but this is what I have obsreved.. Is this any kind of memory corruption or some known issue wich I may not be aware of?
Hi You have got it wrong. The following program below should show it. ++++++++++++++++++++++++++++++++++++++++++++++ Code: #include<stdio.h> #include<conio.h> main(){ unsigned int num =100; unsigned int *ptr=# printf("%d\n",num); //if (ptr!=&num){ // printf("Something is wrong"); //} printf("&num:%d\n",&num); printf("ptr:%d\n",ptr); getchar(); } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Are you looking at (a) the address of ptr, (b) ptr itself, or (c) what ptr is pointing at? If (b) then it should be exactly equal and if it isn't, your compiler is critically broken and you need a new one. But given the question you are asking, I suspect you're a beginner and the difference is actually down to a or c.
Can you please share your code? If we can have a look at your code, we would be able to understand your problem better.
You'll have to share your code. Also let us know what version of what compiler, and what version of what operating system, you're using. This code proves ptr should equal &num: Code: void test44() { unsigned int num=10; unsigned int *ptr=# printf("%d %d %x %x\n",num,*ptr,&num,ptr); } Output (Visual C++ 2010): 10 10 1af79c 1af79c So upload a short demo like the one here that shows the problem and include the output showing the different values of &num and ptr. Because ptr should be exactly equal to &num, and if it isn't then as I said before, either your compiler is terminally broken and you should never use it again, or you are looking at the wrong thing. >>"When i look into ptr" How exactly? Are you using a debugger?