Autor
|
Tema: Como funciona un arreglo o vector? (Leído 4,294 veces)
|
FKT
Desconectado
Mensajes: 221
|
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 ? #include <stdio.h> #include <stdlib.h> int main (){ /*Declarar e inicializar un arreglo Unidimensional o Vector*/ int numeritos[10] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}; int indice = 0; for(indice = 0; indice <= 9; indice++){ printf("\nEl indice %i tiene un %i\n",indice ,numeritos [indice ]); } return 0; }
El array entero no sino la parte de: 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
Mensajes: 724
Intentando ser mejor cada día :)
|
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: miarray[indice*constante + desplazamiento] 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
Mensajes: 221
|
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
Mensajes: 3.412
ASMático
|
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í: int *array = (int*)malloc(sizeof(int)*5);
Como dato:int array[5]; *(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
Mensajes: 724
Intentando ser mejor cada día :)
|
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
Mensajes: 221
|
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
|
|
|
En línea
|
Solo hay 10 tipos de personas, las que saben binario y las que no.
|
|
|
Orubatosu
|
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
Mensajes: 724
Intentando ser mejor cada día :)
|
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
|
|
|
|
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,654
|
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,499
|
1 Septiembre 2012, 18:40 pm
por rir3760
|
|
|
Como funciona este arreglo?
« 1 2 »
Programación C/C++
|
FKT
|
10
|
5,199
|
8 Septiembre 2015, 11:25 am
por FKT
|
|
|
Devolver un arreglo o vector desde una funcion.
Programación C/C++
|
MartNahuel95
|
2
|
4,146
|
10 Junio 2016, 04:09 am
por engel lex
|
|
|
¿Como funciona un arreglo?
Programación C/C++
|
fafafa01
|
1
|
2,183
|
29 Junio 2016, 08:04 am
por engel lex
|
|