Autor
|
Tema: Arreglos (Leído 2,514 veces)
|
angeljonh
Desconectado
Mensajes: 20
|
 |
Arreglos
« en: 20 Agosto 2017, 02:16 am » |
|
Tengo una duda con un arreglo, porque el iterador me da 4, a que se debe, AYUDA? //Arreglo/error.cpp/ #include <iostream>
using std::cout; using std::endl;
int main(void){
int i=0; int arreglo[3]={3,3,3}; arreglo[i++]=1; arreglo[i++]=2; arreglo[++i]=4; cout<<"arreglo[0]= "<<arreglo[0]<<endl; cout<<"arreglo[1]= "<<arreglo[1]<<endl; cout<<"arreglo[2]= "<<arreglo[2]<<endl; cout<<"iterador i= "<<i<<endl; return 0; }
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
'i' debería darte 3. Si da 4, es por el error que te comento ahora:
La tercera vez que asignas al arreglo ese 4, pusiste ++i. Por tanto, estás asignando a la posición 3 en vez de a la 2. Tienes que poner "i++" o "i" asecas ahí. "++i" incrementa primero, con lo que sale del array.
El por qué de que 'i' te de 4 se debe a que la variable 'i' puede estar colocada justo después del array en memoria. Por tanto, al acceder a arreglo[3], estás accediendo sin querer a 'i'. Esto es algo dependiente del compilador, así que simplemente corrige el problema y nunca accedas a un array fuera de sus límites.
|
|
|
En línea
|
|
|
|
angeljonh
Desconectado
Mensajes: 20
|
Como el arreglo es memoria contigua, probablemente el compilador asigna la variable e inmediatamente después del arreglo, por lo tanto al acceder a esa dirección de memoria con el arreglo[3]=4(invalido), accede al valor de i y por eso te muestra eso u otra razón podría ser que la memoria que viene justo después del arreglo[2], el SO te la haya asignado al programa, por lo tanto la puedes manejar aunque estés fuera de los índices de tu arreglo.
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Mmm? Te estás auto-respondiendo? No entiendo el comentario xD
|
|
|
En línea
|
|
|
|
angeljonh
Desconectado
Mensajes: 20
|
asi es ya verifique mi duda, gracias a todos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
con arreglos
Java
|
artang
|
0
|
2,287
|
31 Marzo 2009, 04:54 am
por artang
|
|
|
arreglos en c
Programación C/C++
|
arodriguez98
|
5
|
2,790
|
4 Diciembre 2014, 23:20 pm
por fary
|
|
|
ARREGLOS
Programación C/C++
|
JakiRuiz
|
1
|
1,652
|
25 Febrero 2015, 17:08 pm
por eferion
|
|
|
arreglos
Java
|
diegormirez134
|
1
|
2,396
|
19 Junio 2016, 03:24 am
por hectornunezrivas
|
|
|
arreglos en c
Programación C/C++
|
megadethrust1
|
5
|
2,528
|
13 Diciembre 2016, 04:33 am
por engel lex
|
|