Позволяет ли стандарт C присваивать указателю произвольное значение и увеличивать его?

хорошо ли определено поведение этого кода? #include <stdio.h> #include <stdint.h> int main(void) { void *ptr = (char *)0x01; size_t val; ptr = (char *)ptr + 1; val = (size_t)(uintptr_t)ptr; printf("%zu\n", val); ...

С массивами, почему это так, что a[5] = = 5[a]?

Как указывает Джоэл в переполнение стека подкаст #34, в Язык Программирования C (aka: K & R), есть упоминание об этом свойстве массивов в C:a[5] == 5[a] Джоэл говорит, что это из-за арифметики указателя, но я все еще не понимаю. почему a[5] == 5 ...