Control de acceso a los elementos de un arreglo

En C++, el acceso a los elementos de un arreglo tiene que ser controlado por el programador, ya que el lenguaje no restringe la posibilidad de accesar a posiciones de memoria que están más abajo de la última posición reservada para el arreglo.

Lo mismo sucede cuando se manejan cadenas, donde el programador tiene la responsabilidad de controlar el acceso a los caracteres de la cadena, tomando como límite el terminador nulo. En el listado siguiente se presenta un ejemplo de acceso a los 5 bytes colocados abajo del terminador nulo de una cadena dada por el usuario.

  #include     // Para gets() y puts()                
  #include     // Para clrscr() y gotoxy()            
  #include    // Para strlen()                       

  void main()                                                  
  {                                                            
    char nombre[31];                                           
    clrscr();                                                  
    gotoxy(10,1);                                              
    puts("¿ Cuál es tu nombre ? ");                            
    gotoxy(35,1);                                              
    gets(nombre);                                              
    clrscr();                                                  
    gotoxy (10,1);                                             
    puts("ELEMENTO     CARACTER  DIRECCION");                  
    for( int x=0 ; (x <strlen(nombre)+5) x=""><23) x++) gotoxy(10,x+2); printf("nombre[%2d] c="%4d" u", x,nombre[x],nombre[x],&nombre[x]);

Fuente: Apunte de Estructura de Datos del Instituto tecnológico de la Paz