C/Visual C - Arreglos

 
Vista:
Imágen de perfil de angel

Arreglos

Publicado por angel (16 intervenciones) el 20/08/2017 02:09:06
Tengo una duda con un arreglo, porque el iterador me da 4, a que se debe, AYUDA?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//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;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de angel

Arreglos

Publicado por angel (16 intervenciones) el 20/08/2017 17:56:27
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar