5. LOS ARREGLOS Un arreglo es un grupo de posiciones en memoria relacionadas entre sí, por el hecho de que todas tienen el mismo nombre y son del mismo tipo. Para referirse a una posición en particular o elemento dentro del arreglo, especificamos el nombre del arreglo y el número de posición del elemento particular dentro del mismo.1 Definición: <tipo> <variable> [ N ] Declara un arreglo de nombre <variable> con N elementos de tipo <tipo>, (N es una constante). Ejemplo: int a[10]; Referencia o direccionamiento: Se hace referencia al (x + 1) elemento del arreglo definido anteriormente mediante la expresión: a [x] donde x puede ser: 1. una variable entera; 2. el resultado de una expresión aritmética. Notas sobre los arreglos 1. el valor de x debe de estar entre 0 y N A continuación algunos ejemplos: #include <stdio.h> int main() { int i int t[10]; for (i=0; i<10; i++) { printf("De el valor del elemento %d del arreglo:",i); scanf("%d",&t[i]); } for (i=0; i<10; i++) { printf("Valor de t[%d]: %d \n",i,t[i]); } } Segundo ejemplo arreglos /* Ordenamiento de un arreglo de enteros */ #include <stdio.h> 1 H.M Deitel / P.J Deitel Como programar en C/C++ Editorial Prentice Hall Pag 204 int main() { int ti[10]; int i,j,tempo; /* Capturando los valores del arreglo */ for (i=0; i <10; i=i+1) { printf(''De valor de t[%d]: '', i+1); scanf(''%d'',&ti[i]); } /* Ordenando el arreglo */ for (i=0; i <10; i=i+1) for (j=0; j <10; j=j+1) if ( ti[i] < ti[j] ) { tempo = ti[i]; ti[i]=t[j]; ti[j]=tempo; } /* Desplegando el contenido del archivo */ for(i=0; i <10; i=i+1) printf(''%3d'', ti[i]); printf(''\n''); 2 } 6. LOS APUNTADORES Los apuntadores son variables que contienen direcciones de memoria como sus valores. Por lo regular una variable contiene directamente un valor específico. Un apuntador, por otra parte, contiene la dirección de una variable que contiene un valor específico. En este sentido, un nombre de variable se refiere directamente a un valor y un apuntador se refiere indirectamente a un valor. El referirse a un valor a través de un apuntador se conoce como indirección.3 Declaración de apuntadores Los apuntadores como cualquier otra variable han de ser declarados antes de que puedan ser utilizados. El tipo de un apuntador está dado implícitamente por el tipo de la variable a la que apunta. 2 3 Ejemplos tomados de http://homepage.cem.itesm.mx/rogomez/Tutorial-LengC/arreglos.html H.M Deitel / P.J Deitel Como programar en C/C++ Editorial Prentice Hall Pag 260 Los apuntadores pueden ser declarados para apuntar a objetos de cualquier clase. La sintaxis general de declaración es: <tipo> * <variable> Ejemplos de declaraciones: int *contPtr, cont; float *res; unsugned int *nosigno; char *mensaje; La variable contPtr es del tipo apuntador a entero, (int *) y se lee ``contPtr es un apuntador a int'' o ``contPtr apunta a una variable entera''. Los operadores de los apuntadores 1. Operador de dirección & Regresa la dirección de su operando ejemplo: #include <stdio.h> int main() { int y; int *yPtr; y = 5; yPtr = &y; printf("Valor de y: %d \n",y); printf("Valor de yPtr: %d \n",yPtr); } 2. Operador de indirección o de desreferencia Regresa el valor del objeto hacia el cual su operando apunta, es decir un apuntador Ejemplo: #include <stdio.h> main( ) { int x,y; int *py; y = 5; *py = y; x = *py + 5; printf(''Valor de x: %d y de y: %d \n'',*py,x); } Apuntadores y argumentos funciones Pasando parámetros por valor void permuta(x, y) int x,y; { int temp; temp =x; x = y; y = x; } Pasando parámetros por referencia void permuta(px, py) int *px,*py; { int temp; temp = *px; *px = *py; *py = *px; 4 } 4 Ejemplos tomados de: http://homepage.cem.itesm.mx/rogomez/TutorialLengC/apuntadores.html