Está en la página 1de 4

[CURSO C++/LECCION 4.

2] IDSYSTEMS

Lecion 4.2. - Asignacion de valores

El acceso a cada uno de los valores se realiza utilizando un índice que permite indicar qué
elemento del array estamos utilizando. Por ejemplo:

a[2]=17;
printf(“%d”,a[2]);

a[2] es el tercer elemento del array, se le asigna el valor 17 y ese valor se muestra luego en
la pantalla.

Para rellenar los datos de un array se suelen utilizar bucles, en especial el bucle for. Por
ejemplo en el caso de tener que leer 21 notas, gracias a los arrays no necesitamos 21
instrucciones, sino que basta con un bucle con contador que vaya recorriendo cada
elemento.

Ejemplo (lectura de 21 notas):

1
[CURSO C++/LECCION 4.2] IDSYSTEMS

Al final del bucle anterior, las notas estarán rellenadas. Por ejemplo con estos valores:

Otro ejemplo (array que almacena y muestra los 20 primeros factoriales);

En C hay que tener un cuidado especial con los índices, por ejemplo este código es erróneo:

int a[4];
a[4]=13;

No hay elemento a[4] por lo que ese código no tiene sentido. Sin embargo en C no se nos
advierte del fallo, de hecho el uso de a[4] permite almacenar el número 13 en la posición del
que sería el quinto elemento del array. Como eso no tiene sentido, la instrucción escribe en

2
[CURSO C++/LECCION 4.2] IDSYSTEMS

una zona de memoria que podría estar utilizando otra variable, lo que provocaría que el
programa no funcione correctamente (aunque no se nos avise del error).

Hay que tener mucho cuidado con este tipo de errores, conocidos como errores de
desbordamiento de índice de array. Ya que hace que manipulemos la memoria sin control
alguno. Los programas fallan en su ejecución, pero será muy difícil detectar por qué.

Una buena práctica de programación consiste en utilizar constantes en lugar de números


para indicar el tamaño del array. En el ejemplo de las notas ocurre que si nos hemos
equivocado y en lugar de 21 notas había 30, tendremos que cambiar todos los 21 por 30. En
su lugar es más conveniente:

La directiva #define permite definir macros. El compilador sustituirá el nombre TAMANIO por
20 antes de compilar. Si resulta que el número de notas es otra, basta cambiar sólo la línea
del define y no el resto.

iniciar arrays en la declaración

C posee otra manera de asignar valores iniciales al array. Consiste en poner los valores del
array entre llaves en la declaración del mismo.

3
[CURSO C++/LECCION 4.2] IDSYSTEMS

Ejemplo:

int nota[10]={3,5,6,7,3,2,1,7,4,5};

nota[0] valdrá 3, nota[1] valdrá 5, nota[2] valdrá 6 y así sucesivamente. Las llaves sólo se
pueden utilizar en la declaración. Si hay menos elementos en las llaves de los que posee el
array entonces se rellenan los elementos que faltan con ceros, ejemplo:

int nota[10]={3,5};
int i=0;
for(i=0;i<10;i++) printf("%3d",nota[i]);

El resultado es:
500000000

es decir, nota[0] valdrá 3, nota[1] valdrá 5, y el resto se rellena con ceros. En el caso de que
haya más elementos en las llaves de los que declaramos en el array, por ejemplo:

int a[2]={3,5,4,3,7};

Esa instrucción produce un error. Otra posibilidad es declarar el array sin indicar el tamaño y
asignarle directamente valores. El tamaño del array se adaptará al tamaño de los valores:

int a[]={3,4,5,2,3,4,1}; /* a es un array int[7] */

También podría gustarte