>>>>> If I have a char array, and it's always written by the char array, >>>>> can >>>>> it >>>>> be always reliably read by any combination of short/int/long >>>>> pointers? >>>>> >>>>> As I understand, the compiler will see byte writes for all types, so >>>>> readind shoulg be fine without violating any strict alias rules. >>>>> Just >>>>> can't write the array by any other type than char[] access. Right? >>>> >>>> No. You can access anything only as its declared type or character >>>> type; >>>> an array of char thus can be accessed as char only. >>> >>> Not quite: if you write an int to an array of char, you can read it >>> back again. What matters is the effective type. >> >> Of course, but the effective type is equal to the declared type (if >> there >> is any) of the object, >> so that write as int is undefined behaviour already! > > No: character types are special. See Section 6.5 re arrays of > character type and effective types. 6.5/6, first line: The effective typeof an object for an access to its stored value is the declared type of the object, if any. No exception for character types here; there is in some other aspects (like for accesses to allocated storage), butnot for this. Segher