Yair Bahena. Con tecnología de Blogger.

jueves, 20 de noviembre de 2014

PARTE 4

APUNTADORES

Una de las cosas más difíciles que encuentran los principiantes en C es entender el concepto de
apuntadores. El propósito de este documento es dar una introducción sobre apuntadores y de su uso a estos
principiantes.
Me he encontrado a menudo que la principal razón por la que los principiantes tienen problemas con los
apuntadores es que tienen una muy pobre o mínima concepción de las variables, (del modo en que C hace uso
de ellas). Así que comencemos con una discusión sobre las variables de C en general.

#include <stdio.h>
int j, k;
int *ptr;
int main (void)
{
 j = 1;
 k = 2;
 ptr = &k;
 printf("\n");
 printf("j tiene el valor: %d y esta alojado en: %p\n", j, (void *)&j);
 printf("k tiene el valor: %d y esta alojado en: %p\n", k, (void *)&k);
 printf("ptr tiene el valor: %p y esta alojado en: %p\n", ptr, (void *)&ptr);
 printf("El valor del entero al que apunta ptr es: %d\n", *ptr);
 return 0;
}
Nota: Aún tenemos que discutir los aspectos de C que requieren el uso de la expresión (void *) usada aquí.
Por el momento inclúyela en el código de prueba. Ya explicaremos las razones de esta expresión más adelante.


ARREGLOS UNIDIMENSIONALES

Los arreglos (arrays) permiten almacenar vectores y matrices. Los arreglos unidimensionales
sirven para manejar vectores y los arreglos bidimensionales para matrices. Sin embargo, las matrices
tambi´en se pueden almacenar mediante arreglos unidimensionales y por medio de apuntadores a
apuntadores, temas que se ver´an en el cap´ıtulo siguiente.
La palabra unidimensional no indica que se trata de vectores en espacios de dimensi´on uno; indica
que su manejo se hace mediante un sub´ındice. El manejo de los arreglos bidimensionales se hace mediante
dos sub´ındices.

#include <stdio.h>
int mi_arreglo[] = {1,23,17,4,-5,100};
int *ptr;
int main(void)
{
 int i;
 ptr = &mi_arreglo[0]; /* apuntamos nuestro puntero
 al primer elemento del arreglo*/
 printf("\n\n");
 for (i = 0; i < 6; i++)
 {
 printf("mi_arreglo[%d] = %d ", i, mi_arreglo[i]); /*<-- A */
 printf("ptr + %d = %d\n",i, *(ptr + i)); /*<-- B */
 }
 return 0;
}


ARREGLOS MULTIDIMENCIONALES


La declaraci´on de los arreglos bidimensionales, caso particular de los arreglos multidimensionales, se
hace como en el siguiente ejemplo:
double a[3][4];
int pos[10][40];
char list[25][25];
En la primera l´ınea se reserva espacio para 3 × 4 = 12 elementos doble precisi´on. El primer sub´ındice
var´ıa entre 0 y 2, y el segundo var´ıa entre 0 y 3. Usualmente, de manera an´aloga a las matrices, se dice
que el primer sub´ındice indica la fila y el segundo sub´ındice indica la columna.
Un arreglo tridimensional se declarar´ıa as´ı:
double c[20][30][10];

OPERACIONES CON ARREGLOS

La operaciones con arreglos se hacen principalmente con un for de manera que pides un incremento de variable de uno en uno llamada contador seguida de asignarle el valor a cada variable del arreglo asignado el contador como la variable a la que se le estará asignando un valor
para imprimir sera de la misma manera de la cual mandaremos a imprimir cada uno delos datos los cuales se mohatraran dentro de un for con un contador y este mostrara cada una de las posiciones de nuestro arreglo


No hay comentarios.:

Publicar un comentario