puntatore C ad un array
È possibile saltare questo capitolo e poi aspettare di capire il concetto di C puntatori, venuto a sapere in questo capitolo.
Se si capisce il concetto di puntatori in linguaggio C, allora si può cominciare a imparare in questo capitolo. nome di matrice è un puntatore costante che punta al primo elemento della matrice. Pertanto, nella seguente dichiarazione:
double balance[50];
l'equilibrio è un punto di equilibrio e [0] puntatore che affronta il primo elemento della matrice del saldo.Pertanto, il seguente frammento di programmap assegnato al primo elemento di equilibrionel indirizzo:
double *p; double balance[10]; p = balance;
Utilizzare come nome puntatore costante è legittima, e viceversa. Pertanto, * (saldo + 4) è un equilibrio [4] modo legittimo per accedere ai dati.
Una volta che avete l'indirizzo memorizzato nel primo elemento di p, è possibile utilizzare * p, * (p + 1), * (p + 2) e quindi per accedere agli elementi dell'array. L'esempio seguente mostra questi concetti discussi sopra a:
#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; }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
Utilizzando il valore puntatore * (p + 0): 1000,000 mila * (P + 1): 2,000 mila * (P + 2): 3,400 mila * (P + 3): 17,000 mila * (P + 4): 50,000 mila Utilizzare valore di bilanciamento come un indirizzo di matrice * (saldo + 0): 1000,000 mila * (Balance + 1): 2,000 mila * (Balance + 2): 3,400 mila * (Balance + 3): 17,000 mila * (Balance + 4): 50,000 mila
Nell'esempio precedente, p è un puntatore a un puntatore di tipo doppio, che significa che può essere memorizzato in una variabile di tipo double. Una volta che abbiamo l'indirizzop, * valore di p p verrà dato l'indirizzo di memoria corrispondente, come dimostrato negli esempi precedenti.