Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    funzionamento degli array in c

    Mi presento dicendo che e' la prima volta che scrivo su un forum. E' da tempo
    che spulcio tra le vostre guide e leggo consigli che date agli altri.Per questi motivi
    ho deciso di chiedere a voi.
    Spero che non ridiate per la domanda banale ma in giro non ho trovato una risposta che mi soddisfi.

    volevo sapere perche se dichiaro un array con un solo elemento posso scrivere un codice come quello sotto senza che il programma vada in crash?

    codice:
    #include <stdio.h>
    
    int main(){
    clrscr();
    int i; 
    int v[1];
    for (i=0;i<5;i++){
    v[i]=i+1;
    printf("%d\n",v[i]);
    }
    return 0;
    }

  2. #2
    Perché in C non c'è nessun bound-checking sugli array, ovvero non viene controllato esplicitamente che tu stia "dentro" alle dimensioni dell'array. Se sfori da un array per quanto riguarda lo Standard è "undefined behavior" - può succedere qualunque cosa, dal "non succede niente" al "il computer avvia una guerra nucleare".
    In pratica in realtà quando sfori da un array in genere quel che succede è che vai a sovrascrivere memoria riservata ad altre variabili (o per altri fini), il che significa che inizi a riscontrare dei bug "impossibili" (variabili che cambiano valore apparentemente senza perché); se poi esageri veramente vai a toccare memoria marcata come "non allocata" e allora ottieni un crash.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    grazie per la risposta sei stato veloce e preciso nelle informazioni.
    se in futuro avro bisogno spero di poterti ancora rompere le scatole con le mie domandone!!!

  4. #4


    (tra parentesi, in futuro ricordati di inserire il codice nei tag [code] ... [/code], altrimenti perde l'indentazione)
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    ok!ancora grazie alla prossima
    passo e chiudo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.