C ++ указатель на массив
Вы можете пропустить эту главу, и так понимают концепцию C ++ указатели после того, приходят, чтобы узнать в этой главе.
Если вы понимаете концепцию указателей C ++, то вы можете начать учиться в этой главе. Имя массива является постоянным указатель, указывающий на первый элемент массива. Таким образом, в следующем заявлении:
double balance[50];
Баланс является точка & баланса [0] указатель , что адрес первого элемента массива баланса.Таким образом, следующий фрагмент программыр назначен первый элемент балансав адрес:
double *p; double balance[10]; p = balance;
Используйте в качестве константы имя массива указатель является законным, и наоборот. Таким образом, * (баланс + 4) представляет собой баланс [4] законный способ доступа к данным.
После того, как у вас есть адрес, сохраненный в первом элементе р, вы можете использовать * р * (р + 1), * (р + 2) и так, чтобы получить доступ к элементам массива. Следующий пример демонстрирует, эти концепции, описанные выше, чтобы:
#include <iostream> using namespace std; int main () { // 带有 5 个元素的整型数组 double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; p = balance; // 输出数组中每个元素的值 cout << "使用指针的数组值 " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(p + " << i << ") : "; cout << *(p + i) << endl; } cout << "使用 balance 作为地址的数组值 " << endl; for ( int i = 0; i < 5; i++ ) { cout << "*(balance + " << i << ") : "; cout << *(balance + i) << endl; } return 0; } #include <stdio.h> int main () { /* 带有 5 个元素的整型数组 */ double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0}; double *p; int i; p = balance; /* 输出数组中每个元素的值 */ printf( "使用指针的数组值\n"); for ( i = 0; i < 5; i++ ) { printf("*(p + %d) : %f\n", i, *(p + i) ); } printf( "使用 balance 作为地址的数组值\n"); for ( i = 0; i < 5; i++ ) { printf("*(balance + %d) : %f\n", i, *(balance + i) ); } return 0; }
Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:
Используя значение массив указателей * (р + 0): 1000 * (Р + 1): 2 * (P + 2): 3.4 * (Р + 3): 17 * (Р + 4): 50 Используйте значение баланса в качестве адреса массива * (баланс + 0): 1000 * (Баланс + 1): 2 * (Баланс + 2): 3.4 * (Баланс + 3): 17 * (Баланс + 4): 50
В приведенном выше примере, р представляет собой указатель на указатель типа двойной, а это значит, что оно может быть сохранено в переменной типа Double. После того, как мы имеем адреср, * р значение р будет дано соответствующий адрес памяти, как показано в приведенных выше примерах.