* Marc Nieper-Wißkirchen: > Am Fr., 24. Juli 2020 um 10:05 Uhr schrieb Florian Weimer > <fwei...@redhat.com>: > >> It's still a candidate for an RFE. Martin Sebor has been working on >> such warnings. I'm going to talk to him. > > It may also be useful for optimizations because the compiler may make > assumptions. > >> >> It's also undefined when you pass the address of something that is not >> >> the first element of an array of type double to foo1. (Undefined in the >> >> sense that the standard does not say what happens in that case.) >> > >> > Yes, but a pointer to (an existing) double fulfills this requirement. >> >> I don't think that's how the standard defines “first element of an >> array”. I suspect the intent was that it the pointer has to point to an >> array of at least the indicated number of elements, but that's not what >> the standard says. > > According to ISO C, "an array type describes a contiguously allocated > nonempty set of objects with a particular member object type, called > the element type". Thus, given > > double x; > double *p = &x; > > the pointer p points to the first element of an array (of length 1).
This is the case that is unclear: double x[2]; double *p = &x[1]; The standard explicitly says “first element of an array”. Thanks, Florian