C hace un amplio uso de punteros de memoria para el manejo de arrays , llamadas a funciones , estructuras de datos y mucho más . Saber cómo trabajar directamente con punteros es clave para la codificación eficiente C . Instrucciones
Crear variables de puntero de memoria
1
Entender que las variables de puntero de memoria siempre apuntan a los datos de un tipo determinado . Por ejemplo , un puntero a un int es diferente de un puntero a un char . Sin embargo , C no le impida mezclar libremente hacia arriba . Hazlo sólo si estás seguro de que sabes lo que estás haciendo .
2
Crear una variable de puntero de memoria mediante el uso de la sintaxis que se usa para crear una variable del tipo deseado , pero con un asterisco (* ) antes del nombre de la variable , así:
int * x;
3 Considere NULL . Punteros siempre pueden ser nulo ( 0 ) , lo que se suele utilizar para hacer referencia a un puntero que todavía no se ha puesto a punto en cualquier lugar .
Referencia y Dereference
4
Conoce referente. Referencing
se refiere al proceso de encontrar el puntero a una variable existente . En C , el operador de referencia es el signo (& ) . Por ejemplo : int color = 5 ; int * pointer_to_color ; pointer_to_color = &color; Página 5 Utilizar desreferenciación . dereferencing
es el proceso de seguir un puntero a su valor, lo contrario de referencia . En C, el asterisco ( *) se utiliza para la eliminación de referencias , de la siguiente manera : printf ( "El color es % d \\ n", * pointer_to_color ) ; /* imprime 5 * /
uso de memoria Variables puntero
6 Pass en un puntero a la variable cuando se necesita una función para poder cambiar una variable, en lugar de pasar el valor de la variable. Esto le permite utilizar la función de eliminación de referencias para cambiar el valor :
convert_color_to_RGB void (int color, int * rojo, verde int * , int * blue ) { * rojo = redpart (color ) , * = greenpart verde (color ) ; * azul = bluepart (color ) ;} convert_color_to_RGB ( 15 , y myred , y mygreen , y MyBlue ) Página 7 trabajo alrededor de los límites de la C . Siempre que quiera pasar una matriz o estructura en una función , debe pasar un puntero en cambio, debido a que C sólo permite tipos de datos simples que se pasan a las funciones :
int subtotal ( int * Partituras, int howmany ) { int Total = 0 , i; for (i = 0 ; i rendimiento total ;} Página 8 Crear un bucle Como las cadenas son en realidad conjuntos de caracteres , se puede crear un puntero a un personaje para recorrer una cadena: . < pre > void replace_character (char * s , carbonilla , char a ) { char * cp , porque ( cp = s ; && cp * cp ; cp + +) if ( * cp == a ) * cp = a ;}
9
Entender la forma en vistas C matrices. matrices están a cargo de C como punteros , utilizando la aritmética de punteros . C multiplicará automáticamente lo que se agrega a un puntero por el tamaño de los elementos que apunta. Eso significa que las puntuaciones
[ 5 ] = 17 , es exactamente lo mismo que * (puntajes + 5 ) = 17 , . . puede utilizar punteros como una abreviatura de desreferencias array por ejemplo, * Puntuaciones = 17 , siempre se refiere a la elemento 0 ª de la matriz.