Array en C

Kr4n3oK

Buenas!!, estoy aprendiendo C y estoy liado con los arrays y no consiguo sacarlos, es decir, estoy leyendo y tal manuales pero no consigo sacar ni un array unidimensional de un registro xdd

para declaralo con tipo de valor seria
int array[1]
no?
y para sacarlo por pantalla seria
array[1] = 2;
printf("%d", array[1]);

¿Que me falla?
Si pudieseis aclararme esto un poco mas, gracias y saludos.

Thanat0s

Pues lo que te está fallando es que los arrays en C empiezan en 0 no en uno.

int array[1]
array[0] = 2;
printf("%d", array[0]);

Al definirlo lo que metes entre corchetes es el tamaño que va a tener el array, 1,2,3..n.
Pero cuando lo recorres empiezas en 0 y vas hasta n-1.

Saludos.

2
Kr4n3oK

Pero no tengo porque poner el array[0] espeficcamente no?, es decir, puedo poner que me sace el indice 3 del array hola[10], no?

KoRMuZ

Si, pero teniendo en cuenta que has declarado un array de 1 posición, solo tienes la posición 0, que es la primera, disponible.

1
dagavi

Has declarado un array de 1 elemento y estás accediendo al segundo (los índices empiezan en 0).

Tu último post ya es que no le encuentro ni sentido xD

Si quieres que te imprima el contenido de una posición del array obviamente le tendrás que decir que elemento es el que has de imprimir: array[0], en este caso.

Si declaras un array de 1 posición y accedes a la 10 pues simplemente leerás basura de la memoria, eso si el programa no te peta.

Yandr0s

#2 lo ha explicado bien.

Puedes decirle que te saque el indice que quieras del array como tu dices, poniendo array[indice]

Lo que pasa esque si lo defines como array[1] , ( tamaño 1), el primer elemento es el indice 0, es decir array[0] . Si intentas sacar el 1, te estas saliendo del rango.

umm, creo que lo he complicado mas xDD

Thanat0s

#3 Sí, puedes poner la posición que te de la gana, es más, puedes recorrer toda y cada una de las posiciones que tiene el array, pero cumpliendo siempre que no te salgas del rango del array que has definido.

Es decir, si defines un array de 9 posiciones, la última será 8.
En general, si defines un array de n posiciones, la última a la que podrás acceder será n-1.

Kr4n3oK

Vale gracias, entendido, aqui teneis el codigo de prueba:
#include <stdio.h>

int main()
{
int hola[3];



hola[0] = 2;
printf("%d", hola[0]);

getche();
return 0;
}

Usuarios habituales

  • Kr4n3oK
  • Thanat0s
  • Yandr0s
  • dagavi
  • KoRMuZ