#include <stdio.h>
int main(void)
{
int a[]= {15, 14, 34, 46, 69, 86, 10, 0, 4};
int *p = a; // p point to the first element of array a[0]
printf("%x\n%x\n",&p+1, &a[0]);
return 0;
}
, что код будет печатать, как напримерпочему & р + 1 дают тот же результат, что и р
bff0e554
bff0e554
так & р + 1 возвращает адрес первого элемента массива. Как я понимаю, & p возвращает адрес этого указателя и & p + 1 должен печатать адрес указателя + 1, пожалуйста, сообщите мне, что я пропустил !!
Массив не является указателем, а не массивом. '& p' является ** адресом **' p'. – Olaf
Совпадение. Вы путаете 'p + 1' и' & p + 1'. Так получилось, что 'p' хранится так, что один после' p' является началом массива. Отмените порядок деклараций или введите другой массив между ними или некоторые другие указатели или почти все, что изменит расположение переменных в стеке, и ваши печатные значения больше не совпадут - это совпадение, которое они делают. –
@JonathanLeffler; Это может быть совпадением, но вы не должны игнорировать UB в этом месте. – haccks