Are addresses of const members const?
Scott Meyers
sdm at cs.brown.edu
Thu Feb 7 07:27:19 AEST 1991
For both ANSI C and as-ANSI-as-we-have C++, are the members of a const
struct themselves const? Consider this:
struct Foo {
char *data;
};
char * f(const struct Foo x)
{
return x.data;
}
Within function f, x is a const. Is x.data therefore a const? If so,
there should be a type mismatch between the expression being returned
(const char *) and the function's return type (char *). Yet this example
sails through 3 C++ compilers (g++, cfront 2.0, Sun cfront 2.1 beta) and
one ANSI C compiler (gcc) without so much as a wimper.
The same question can be put this way: is the following legal?
const struct foo x;
char **p = &(x.data); /* lhs = char **, rhs = const char ** */
If the members of a const structure are themselves supposed to be const,
I'd appreciate it if you'd point me to an authoritative reference that says
so. For C++, I looked in the ARM, but couldn't find anyplace where it said
what should happen. For C, all I've got is the second (ANSI C-based)
edition of K&R, but I couldn't find any information in there, either.
Thanks,
Scott
-------------------------------------------------------------------------------
What do you say to a convicted felon in Providence? "Hello, Mr. Mayor."
More information about the Comp.lang.c
mailing list