Мне было интересно, как на самом деле работает *(&array + 1)
.Я видел это как простой способ вычислить длину массива и хочу понять это правильно перед использованием.Я не очень разбираюсь в арифметике указателей, но, насколько я понимаю, &array
дает адрес первого элемента массива.(&array + 1)
будет идти в конец массива с точки зрения адреса.Но *(&array + 1)
не должно давать значение, которое находится по этому адресу.Вместо этого он печатает адрес.Я был бы очень признателен за вашу помощь, чтобы у меня в голове все прояснилось.
Вот простой пример, над которым я работаю:
int numbers[] = {5,8,9,3,4,6,1};
int length = *(&numbers + 1) - numbers;