C++ Указатель на массив

Массивы C++

Вы можете пока пропустить эту главу и вернуться к изучению её содержимого после того, как поймёте концепцию указателей в C++.

Если вы уже немного понимаете указатели в C++, то можете начинать изучение этой главы. Имя массива — это константный указатель на первый элемент массива. Поэтому в следующем объявлении:

double exampleAarray[50];

exampleAarrayявляется указателем на &exampleAarraypприсвоитьexampleAarrayадрес первого элемента:

double *p;
double exampleAarray[10];

p = exampleAarray;

.

Как только вы сохраните адрес первого элемента в p, вы можете использовать *p, *(p+1), *(p+2) и т. д. для доступа к элементам массива. В следующем примере демонстрируются эти концепции, рассмотренные выше:

Пример

#include <iostream> using namespace std; int main () { // массив типа double с 5 элементами double exampleAarray[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; p = exampleAarray; // вывести значение каждого элемента массива cout << "Значения массива с использованием указателей" << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(p + " << i << ") : "; cout << *(p + i) << endl; } cout << "Используйте exampleAarray как адрес значения массива" << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(exampleAarray + " << i << ") : "; cout << *(exampleAarray + i) << endl; } return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

使用指针的数组值 
*(p + 0) : 1000
*(p + 1) : 2
*(p + 2) : 3.4
*(p + 3) : 17
*(p + 4) : 50
使用 exampleAarray 作为地址的数组值 
*(exampleAarray + 0) : 1000
*(exampleAarray + 1) : 2
*(exampleAarray + 2) : 3.4
*(exampleAarray + 3) : 17
*(exampleAarray + 4) : 50

В приведенном выше примере p — это указатель на double, что означает, что он может хранить переменную типа double. Как только у нас есть адрес в p,*pвернет значение, хранящееся по соответствующему адресу в p, как показано в примере выше.

Массивы C++

Другие расширения