Я слышал слухи о том, что в C массивы, содержащиеся внутри структур, могут содержать дополнение между элементами массива. Теперь очевидно, что количество отступов не может меняться между любыми парами элементов или вычислять следующий элемент в массиве, не представляется возможным с простой арифметикой указателя.
Этот слух также заявил, что массивы, которые не содержатся в структурах, не будут содержать никаких дополнений. Я знаю, что, по крайней мере, эта часть верна.
Итак, в коде, слух:
{
// Given this:
struct { int values[20]; } foo;
int values[20];
// This may be true:
sizeof(values) != sizeof(foo.values);
}
Я вполне уверен, что sizeof(values)
всегда будет равен sizeof(foo.values)
. Тем не менее, я не смог найти что-либо в стандарте C (в частности, C99), который явно подтверждает или отрицает это.
Кто-нибудь знает, адресован ли этот слух в любом стандарте C?
edit. Я понимаю, что между окончанием массива foo.values
и концом struct foo
может быть отступы и что в стандарте указано, что между начало foo
и начало foo.values
. Однако есть ли у кого-нибудь цитата или ссылка на стандарт, где говорится, что между элементами foo.values
?