August 6
C fa ampio uso di puntatori di memoria per la gestione di array, chiamate di funzione, le strutture dati e molto altro ancora. Saper lavorare direttamente con i puntatori è la chiave per la codifica efficiente C.
1 Capire che le variabili puntatore di memoria puntano sempre ai dati di un determinato tipo. Per esempio, un puntatore a un int è diverso da un puntatore a un char. Tuttavia, C non vi impedirà di mescolandoli liberamente in su. Farlo solo se siete sicuri di sapere cosa si sta facendo.
2 Creare una variabile puntatore di memoria utilizzando la sintassi devi usare per creare una variabile del tipo desiderato, ma con un asterisco
() prima del nome della variabile, in questo modo:
int x;
3 Considerare NULL. I puntatori possono essere sempre NULL (0), e questo di solito è usato per riferirsi a un puntatore che non è ancora stata fissata al punto da nessuna parte.
4 Venite a conoscere Referencing.
Referencing si riferisce al processo di trovare il puntatore a una variabile esistente. In C, l'operatore di riferimento è il commerciale (&). Per esempio:
int color = 5;
int * pointer_to_color;
pointer_to_color = & colore;
5 Utilizzare Dereferencing.
Dereferencing è il processo di seguire un puntatore al suo valore, l'opposto di riferimento. In C l'asterisco () è usato per dereferencing, come segue:
printf ( "Il colore è% d \ n", pointer_to_color); /
Stampe 5 /
6 Passare in un puntatore alla variabile quando si ha bisogno di una funzione per essere in grado di cambiare una variabile, invece di passare il valore della variabile. In questo modo l'uso funzione di dereferencing per modificare il valore:
vuoto convert_color_to_RGB (colore int, int
rosso, verde int, int blu) {
rosso = redpart (colore);
verde = greenpart (colore);
blu = bluepart (colore);
}
convert_color_to_RGB (15, & myred, e mygreen, e MyBlue);
7 Aggirare i limiti di C. Ogni volta che si desidera passare un array o una struttura in una funzione, è necessario passare un puntatore, invece, a causa C consente solo i tipi di dati singoli da passare alle funzioni:
int subtotale (punteggi int *, int howmany) {
int totale = 0, I;
for (i = 0; i <howmany; i ++) totale + = punteggi [i];
rendimento totale;
}
8 Creare un ciclo. Dal momento che le stringhe sono in realtà array di caratteri, è possibile creare un puntatore a un carattere per scorrere una stringa:
replace_character void (char
s, char da, char a) {
cp char;
per (CP = s; cp && cp; CP ++) se (CP == da) * CP = a;
}
9 Capire il modo C viste le matrici. Gli array sono gestite da C come puntatori, usando l'aritmetica dei puntatori. C moltiplicherà automaticamente ciò che si aggiunge a un puntatore per la dimensione degli elementi a cui punta. Questo significa
punteggi [5] = 17; è esattamente lo stesso come
(punteggio + 5) = 17; . È possibile utilizzare i puntatori come una scorciatoia per dereferenziazioni array. Per esempio,
punteggi = 17; si riferisce sempre all'elemento 0th dell'array.