Protocolos de Comunicación Manejo de Punteros Preparado por: jhuircan Octubre -2013 Objetivos Revisión del concepto de puntero Uso de los punteros Consideraciones especiales Definición Un puntero es una variable que almacena la dirección de un variable. Es uno de los elementos más potente de lenguaje de programación C Permite el paso de referencia a una función parámetros por Definición tipo *identificador; Tipo de variable al cual “apunta” Definición tipo *identificador; El asterisco indica que es un puntero Definición tipo *identificador; Nombre de la variable puntero Definición char *pdato; Puntero a una variable char Definición int *pdato2; Puntero a una variable tipo int Definición char *pdato, dato; pdato= &dato; Extrae la dirección de la variable dato Definición char *pdato, dato, dato2; pdato= &dato; dato2= *pdato; Extrae el contenido apuntado por dato y lo almacena en dato2 Definición y uso // Declaraciones de puntero char *pdato, dato, dato4; int *pint, x; int main() { dato=0x2f; pdato=&dato; //pdato almacena la dir de dato dato4=*pdato; // dato4=dato; return 1; } Definición y uso 0x0020 0x0021 0x2F dato 0x0021 pdato 0x0022 0x0023 0x0024 0x0025 0x0026 0x0027 Definición char *pdato, dato, dato2; pdato++; Al incrementar el puntero se incrementa la dirección en una Definición int *pdato_int, dato2; pdato_int++; Al incrementar el puntero se incrementa la dirección en dos Uso de punteros en funciones int funcion(char *s2, char *s1); Se pasa como argumento la dirección de una variable Uso de punteros en funciones int funcion(char *s2, char *s1); Si el contenido de la variable apuntada cambia dentro de la función, entonces dicha variación se verá reflejada en el exterior Uso de punteros en funciones 2 char *fun(); La fun devuelve un puntero, es decir devuelve una dirección a una variable tipo char Uso de punteros en funciones 2 char *fun() { char *p, dato; void main() { char *pun, dato; … p=&dato; return(p); } pun=fun(); // Dev dir } Otros contenidos de los punteros Cuando un puntero no es capaz de recuperar la dirección, este almacena el identificador NULL Cuando las funciones retornan un puntero, estas pueden retornar un NULL Esto puede ocurrir cuando se produce un error