C указатель на массив
Вы можете пропустить эту главу, а затем ждать, чтобы понять концепцию указателей C, приходят учиться в этой главе.
Если вы понимаете концепцию указателей в языке C, то вы можете начать учиться в этой главе. Имя массива является постоянным указатель, указывающий на первый элемент массива. Таким образом, в следующем заявлении:
double balance[50];
Баланс является точка & баланса [0] указатель , что адрес первого элемента массива баланса.Таким образом, следующий фрагмент программыр назначен первый элемент балансав адрес:
double *p; double balance[10]; p = balance;
Используйте в качестве константы имя массива указатель является законным, и наоборот. Таким образом, * (баланс + 4) представляет собой баланс [4] законный способ доступа к данным.
После того, как у вас есть адрес, сохраненный в первом элементе р, вы можете использовать * р * (р + 1), * (р + 2) и так, чтобы получить доступ к элементам массива. Следующий пример демонстрирует, эти концепции, описанные выше, чтобы:
#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,000000 * (Р + 1): 2,000000 * (P + 2): 3,400000 * (P + 3): 17,000000 * (P + 4): 50,000000 Используйте значение баланса в качестве адреса массива * (баланс + 0): +1000,000000 * (Баланс + 1): 2,000000 * (Баланс + 2): 3,400000 * (Баланс + 3): 17,000000 * (Баланс + 4): 50,000000
В приведенном выше примере, р представляет собой указатель на указатель типа двойной, а это значит, что оно может быть сохранено в переменной типа Double. После того, как мы имеем адреср, * р значение р будет дано соответствующий адрес памяти, как показано в приведенных выше примерах.