"Dave Korn" <[EMAIL PROTECTED]> writes: | On 29 June 2006 14:44, Richard Guenther wrote: | | > But with C language constructs you cannot assume that an object | > passed to a function via a const pointer is not modified. So, there | > is no real "const" regarding to objects pointed to. Consider | > | > void foo(const int *i) | > { | > int *k = (int *)i; | > *k = 0; | > } | > int bar(void) | > { | > int i = 1; | > foo(&i); | > return i; | > } | > | > should return 0, not 1. | | That's cheating! You casted away const, it's a blatant aliasing violation, | you deserve everything you get. The compiler is specifically *allowed* to | assume you don't pull stunts like this *in order to* make const-optimisation | possible and useful.
Not from the C language point of view. -- Gaby