260 likes | 689 Views
PUNTEROS EN EL LENGUAJE C. VARIABLES DE PUNTERO. Variable común ( x ) El valor de la variable está almacenada en la dirección de memoria. VARIABLE DE PUNTERO (px) Aquí se almacena la DIRECCIÓN DE MEMORIA DE X. Se dice que px APUNTA a X. 55.
E N D
VARIABLES DE PUNTERO Variable común ( x ) El valor de la variable está almacenada en la dirección de memoria. VARIABLE DE PUNTERO (px) Aquí se almacena la DIRECCIÓN DE MEMORIA DE X. Se dice que px APUNTA a X. 55 Una variable de puntero también puede tener a su vez otra variable de puntero. 18 45
UNA VARIABLE DE PUNTERO ALMACENA LA DIRECCIÓN DE LA MEMORIA DE OTRA VARIABLE.
DECLARACIÓN DE VARIABLES DE TIPO PUNTERO EN C tipo * nombre; Ejemplos: int * pi; //puntero a entero int * pa, *pb; //dos punteros a entero char ca, *cca // una variable char y un puntero a // tipo char double * db; // puntero a double char * pchr; // puntero a char long * pln[20]; //VECTOR de punteros tipo //long
AsignacionesVariable de puntero = Dirección de memoria x = 15.22 15.22 px = &x 26
Asignaciones (cont.)Variable de puntero1 = Variable de puntero2 x = 15.22 15.22 26 px = &x py = px 26 DOS VARIABLES DISTINTAS VAN A APUNTAR A LA MISMA DIRECCIÓN DE MEMORIA
DERREFERENCIACION(INDIRECCION) Es la operación que permite obtener el valor almacenado en la dirección de memoria a la que apunta el puntero. Sintaxis: * variable de puntero Ejemplo: x = 50; //una variable almacena el valor 50. px = &x; //la variable de puntero almacena la //dirección de x. *px = 250; //La variable x pasa a valer 250. y = *px; //Asigno a y el valor de x o sea 250.
OPERACIONES ARITMÉTICAS CON PUNTEROS A las variables de puntero se les puede sumar y restar números enteros. Al sumarle o restarle un entero n a una variable de puntero se apuntará a una dirección de memoria ubicada a (± n) multiplicado por el número de bytes del tipo de variable a la que se apunta. Ejemplo: Al sumarle 5 a una variable de puntero que apunta a int, se apuntará a una nueva dirección de memoria ubicada 20 bytes en sentido creciente de la memoria.
152 35 1785 92 88 x = 152 px+3 apunta a &x+3 * sizeof( tipo ) *( px + 3 ) vale 92 px == &x &x == 17 *px == 152 17
1520 362 55 96 725 133 0 -95 128 PUNTEROS Y VECTORES a es un vector de 9 términos *(a + 5) a[0] * a • Se puede decir que: • a Es una variable de puntero que apunta a la dirección de memoriade a[0]. • a == & a[ 0 ]; • *a == a[ 0 ]; • *( a + 5) == a[ 5 ] a[8] a
1520 362 55 96 725 133 0 -95 128 PUNTEROS Y MATRICES a[ 0 ] a[ 1 ] a[ 2 ] a[ 0 ][ 0 ] a[ 2 ][ 2 ] a
PUNTEROS Y MATRICESConclusiones Una matriz m x n es un vector de m vectores de dimensión n. a[ m ][ n ] == { a[ 0 ], a[ 1 ], . . ., a[ m ] } donde cada a[ i ] vale: a[ i ] == { a[ i ][ 0 ], a[ i ][ 1 ], . . . , a[ i ][ n ] } Para todas las matrices se cumple lo siguiente: a == &a[ 0 ][ 0 ] //dirección de memoria a[0][0]; a[ 0 ] = &a[ 0 ][ 0 ]; a[ i ] == &a[ i ][ 0 ]; *a[ i ] == a[ i ] [ 0 ]; *a[ i ] + j == a[ i ][ j ]; a[ i ][ j ] == *( *a+ i * m + j ) ;