elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como funciona un arreglo o vector?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como funciona un arreglo o vector?  (Leído 3,912 veces)
FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Como funciona un arreglo o vector?
« en: 24 Agosto 2015, 20:38 pm »

Buenas, se que los arrays son como unas "cajas imaginarias" en las que hay un indice que tu declaras que hace referencia a las "minicajas" por así decirlo, es un ejemplo muy cutre que se me ha ocurrido ahora mismo mientras escribo y alomejor no me habéis entendido.
En el siguiente codigo como funciona el array ?                                                                                         
                         
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main (){
  5.  
  6. /*Declarar e inicializar un arreglo Unidimensional o Vector*/
  7.  
  8. int numeritos[10] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
  9. int indice = 0;
  10.  
  11.    for(indice = 0; indice <= 9; indice++){
  12.     printf("\nEl indice %i tiene un %i\n",indice,numeritos[indice]);
  13. }
  14.  
  15. return 0;
  16. }
  17.  


El array entero no sino la parte de:
Código
  1. printf("\nEl indice %i tiene un %i\n",indice,numeritos[indice]);

Donde al final del "printf()" el array tiene la variable indice en donde estaria el indice de cada posicion empezando por el 0, no sabía que se podia meter una variable dentro de la declaración del indice.


En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Como funciona un arreglo o vector?
« Respuesta #1 en: 24 Agosto 2015, 20:47 pm »

Lo que se hace con ese código es recorrer la cajita, desde su primer habitáculo (posición 0) hasta el último (posición 9), y mostrar por la pantalla el índice, y lo que contiene el array en esa posición. Nada más. Para ello se usa un bucle for para ir incrementando la variable índice de uno en uno.

Por otra parte sí, puedes poner lo que quieras entre corchetes incluso una expresión del tipo:

Código
  1. miarray[indice*constante + desplazamiento]
  2. miarray[laexpresión matematica que quieras siempre que el resultado sea entero]
Y en esas expresiones puedes usar la cantidad de variables que quieras. Siempre que el índice resultante esté dentro de los límites del array y sea un numero entero obligatoriamente. Entre otras cosas porque no existe la cajita 3,2. O la 3 o la 4, pero la 3,2 no.

Un saludo.


« Última modificación: 24 Agosto 2015, 20:49 pm por avesudra » En línea

Regístrate en
FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Como funciona un arreglo o vector?
« Respuesta #2 en: 24 Agosto 2015, 20:49 pm »

Tengo dificultades para comprenderlo la verdad, si no hay ninguna posicion que se llame indice por ejemplo porque no existe, entonces que pinta el array ?
En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Como funciona un arreglo o vector?
« Respuesta #3 en: 24 Agosto 2015, 20:52 pm »

En memoria, un array es un conjunto de elementos colocados uno delante de otro.
Al hacer "array[ x ]", accedes a la posición X en memoria. Ese X es un entero, que puede ser una constante, una variable, o el retorno de una función, mientras sea un entero.

También puedes crear un array de tamaño dinámico así:

Código
  1. int *array = (int*)malloc(sizeof(int)*5);


Como dato:
Código
  1. int array[5];
  2. *(array + 2*sizeof(int)) == array[2];

Tengo dificultades para comprenderlo la verdad, si no hay ninguna posicion que se llame indice por ejemplo porque no existe, entonces que pinta el array ?

Visto lo anterior, verás que, al acceder a una posición de memoria inexistente, 1 de 2: o da error, o muestra/sobreescribe memoria que tendrá valores teóricamente desconocidos.
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Como funciona un arreglo o vector?
« Respuesta #4 en: 24 Agosto 2015, 20:54 pm »

Tengo dificultades para comprenderlo la verdad, si no hay ninguna posicion que se llame indice por ejemplo porque no existe, entonces que pinta el array ?

Creo que estás etiquetando cada habitáculo de la caja(o yo no te entiendo bien), no es que haya una posición que se llame índice. Las posiciones son valores exclusivamente números naturales (enteros positivos).

Me explico.

Mi Array

Posicion 0  ----------> Contenido: 3
Posicion 1  ----------> Contenido: 2
Posicion 2  ----------> Contenido: 1
Posicion 3  ----------> Contenido: 8
Posicion 4  ----------> Contenido: 0

Entonces la variable indice lo que hace es ponerse primero en 0. Y decimos ¿que hay en miarray[indice]? como la variable indice en ese momento contiene un cero es lo mismo que preguntarse, ¿qué hay en miarray[0]? Y el programa te dice pues el contenido de la posición 0 de miarray es un 3.

Luego la variable índice se incrementa en uno. Y ahora es lo mismo que preguntarse que hay en miarray[1], y así sucesivamente.

Saludos.
En línea

Regístrate en
FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Como funciona un arreglo o vector?
« Respuesta #5 en: 24 Agosto 2015, 21:09 pm »

Creo que estás etiquetando cada habitáculo de la caja(o yo no te entiendo bien), no es que haya una posición que se llame índice. Las posiciones son valores exclusivamente números naturales (enteros positivos).

Me explico.

Mi Array

Posicion 0  ----------> Contenido: 3
Posicion 1  ----------> Contenido: 2
Posicion 2  ----------> Contenido: 1
Posicion 3  ----------> Contenido: 8
Posicion 4  ----------> Contenido: 0

Entonces la variable indice lo que hace es ponerse primero en 0. Y decimos ¿que hay en miarray[indice]? como la variable indice en ese momento contiene un cero es lo mismo que preguntarse, ¿qué hay en miarray[0]? Y el programa te dice pues el contenido de la posición 0 de miarray es un 3.

Luego la variable índice se incrementa en uno. Y ahora es lo mismo que preguntarse que hay en miarray[1], y así sucesivamente.

Saludos.
Así es avesudra lo que me he explicado mal, lo que no entendía, que ya me has aclarado, es lo del indice dentro de "[]".
Gracias  ;D
En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Como funciona un arreglo o vector?
« Respuesta #6 en: 25 Agosto 2015, 11:07 am »

De todos modos, te recomiendo que llames a estas estructuras arreglos o arrays, no vectores.

El motivo es sencillo, en C++ (si te metes en el) existe un contenedor llamado vector, que se incluye como

#include <vector>

Los vectores son similares hasta cierto punto a los arrays, pero tienen herramientas para su manejo (por ejemplo los iteradores) que hacen su manejo mas seguro, desde el momento que el uso de iteradores es un "seguro" de que no te sales de los límites del mismo. Además los vectores tienen un tamaño dinámico. Esto es que no defines una cantidad de "casillas", sino que estas se añaden o eliminan según tus necesidades

Si ahora empiezas a llamar vectores a un array, luego puedes liarte.
En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Como funciona un arreglo o vector?
« Respuesta #7 en: 25 Agosto 2015, 20:58 pm »

De todos modos, te recomiendo que llames a estas estructuras arreglos o arrays, no vectores.

El motivo es sencillo, en C++ (si te metes en el) existe un contenedor llamado vector, que se incluye como

#include <vector>

Los vectores son similares hasta cierto punto a los arrays, pero tienen herramientas para su manejo (por ejemplo los iteradores) que hacen su manejo mas seguro, desde el momento que el uso de iteradores es un "seguro" de que no te sales de los límites del mismo. Además los vectores tienen un tamaño dinámico. Esto es que no defines una cantidad de "casillas", sino que estas se añaden o eliminan según tus necesidades

Si ahora empiezas a llamar vectores a un array, luego puedes liarte.

Desgraciadamente en la Universidad, al menos aquí en España y en la mía, llaman a las estructuras "registros" y a los arrays "vectores"(provocando verdaderos dolores de cabeza cuando los estudiantes ven MIPS ya que los registros para ellos son estructuras y van más perdidos que qué).

Pero claro también usan fflush(stdin) como solución galáctica... así que la fiabiliad de estas "convenciones" para los nombres es un tanto cuestionable.

Y ya ni hablar de los que van de guays porque tienen un título(y son profesores) y mucha gente de este foro que no tiene papel que lo acredite le da 30000 vueltas en cualquier cosa.

Saludos y FKT te recomiendo lo mismo que Orubatosu.
« Última modificación: 25 Agosto 2015, 21:03 pm por avesudra » En línea

Regístrate en
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para intercalar elementos de un arreglo en un tercer vector dado 2 vectore
Programación General
sebastian2012 0 7,301 Último mensaje 23 Julio 2012, 02:56 am
por sebastian2012
Ayuda - Guardar un Arreglo (Vector) dentro de un Archivo TxT
Programación C/C++
alejandrosevenfold 2 9,158 Último mensaje 1 Septiembre 2012, 18:40 pm
por rir3760
Como funciona este arreglo? « 1 2 »
Programación C/C++
FKT 10 4,513 Último mensaje 8 Septiembre 2015, 11:25 am
por FKT
Devolver un arreglo o vector desde una funcion.
Programación C/C++
MartNahuel95 2 3,678 Último mensaje 10 Junio 2016, 04:09 am
por engel lex
¿Como funciona un arreglo?
Programación C/C++
fafafa01 1 1,949 Último mensaje 29 Junio 2016, 08:04 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines