Я инициализировал массив в C++, используя как статическое, так и динамическое распределение.Статическая и динамическая адресация памяти памяти?
// dynamic allocation... len is input by user.
int *data = new int [len];
// print memory address
cout<< &data<<endl;
cout<< &data[0]<<endl;
// static allocation...
int *arr1[10];
// print memory address
cout<< &arr1<<endl;
cout<< &arr1[0]<<endl;
Я ожидал, что & данные и данные & [0] для возврата и тот же адрес памяти, поскольку они указывают на местоположение первого элемента массива. Тем не менее, я получил следующие результаты:
0x7fffb9f3dd40
0x24c6010
0x7fffb9f3dcf0
0x7fffb9f3dcf0
Это, казалось, работать, как и ожидалось для arr1. Может кто-нибудь объяснить это? Что мне не хватает?
данные 'int * data' здесь указатель; вывод его указателя приводит к указателю на указатель. 'int * arr1 [10]' arr1 - массив (указателей); взятие его указателя приводит к указателю на первый элемент массива. –