Это потому, что имя массива (my_array
) отличается от указателя на массив. Это псевдоним адреса массива, и его адрес определяется как адрес самого массива.
Однако указатель является обычной переменной C в стеке. Таким образом, вы можете взять свой адрес и получить другое значение от адреса, который он хранит внутри.
Я написал об этой теме здесь - пожалуйста, взгляните.