regarding const pointer

answerme's Avatar, Join Date: Dec 2007
Ambitious contributor
Code:
int i=10;
	const int ci=123;
	const int *cpi;
	int *ncpi;
	cpi=&ci;
	printf("Main cpi  %d\n",*cpi);
	ncpi=&i;
	printf("Main ncpi %d\n",*ncpi);
	cpi=ncpi;
	printf("second %d\n",*cpi); 
	ncpi=(int *)cpi;
	printf("%d\n",*ncpi);
	*ncpi=0;
	exit();
My question is why *ncpi =0 ,
Salem's Avatar, Join Date: Nov 2007
Ambitious contributor
Can you post a complete program, including
- the main(),
- the include files,
- how you compiled it,
- and what you saw on the output (copy/paste from your console).

For instance, C and C++ handle 'const' differently.
answerme's Avatar, Join Date: Dec 2007
Ambitious contributor
Code:
#include<stdio.h>
main()
{
	int i=10;
	const int ci=123;
	const int *cpi;
	int *ncpi;
	cpi=&ci;
	printf("Main cpi  %d\n",*cpi);
	ncpi=&i;
	printf("Main ncpi %d\n",*ncpi);
	cpi=ncpi;
	printf("second %d\n",*cpi); 
	ncpi=(int *)cpi;
	printf("%d\n",*ncpi);
	*ncpi=0;
	exit();
}
output
Code:
Main cpi  123
Main ncpi 10
second 10 
10
if it dont include *ncpi=0 it gives the same result
Salem's Avatar, Join Date: Nov 2007
Ambitious contributor
Why would attempting the assignment AFTER the value has been printed have any effect whatsoever?

Does exit(); really compile for you?
answerme's Avatar, Join Date: Dec 2007
Ambitious contributor
its a book example ,thats why i asked why it is required to do so ,even i couldnt get that