How can a value of a constant be varied through a pointer ?
Adam D. Ruppe via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Sep 19 18:24:30 PDT 2015
On Sunday, 20 September 2015 at 00:09:52 UTC, RADHA GOGIA wrote:
> I went through these two links and found that this behaviour is
> undefined , but the only issue which I have is that in one
> sense we say that since local variables live on stack , hence
> they cannot be located on read only memory region but if this
> is so then if I try to alter the value of the constant directly
> through assignment then why does it show error if it is not
> located in the read only memory region :
const in C (and D) isn't necessarily related to read-only memory
on the hardware level. It is a feature of the type system -
because the VARIABLE is marked const, the compiler will complain
if you try to write to it.
> const int a=12;
> int *ptr ;
> ptr=&a;
> *ptr=8; // no error
BTW, that is allowed in C, but would be a compile error in D -
D's type system propagates the const to pointers too.
More information about the Digitalmars-d-learn
mailing list