Associazione di abbonati e categorie di array

1

Sto imparando "I principi dei linguaggi di programmazione" e ci sono molte informazioni su cose che costituiscono un linguaggio di programmazione. Sfortunatamente ogni materiale che ho incontrato fino ad ora ha un sacco di gergo tecnico coinvolto ed è molto difficile da comprendere (Atleast per un principiante che cerca sinceramente di capire l'argomento da solo leggendo il materiale).

Qualcuno può spiegarmi in generale le "Categorie di binding e array di subscript". La classificazione dice che ci sono cinque tipi di array -
Array 1.Static 2.Fixed array-array dinamico
3.Stack array dinamico
4.Array dinamico heap risolto
5.Heap dinamico dinamico

Questo è ciò che ho potuto capire dalle definizioni (quasi su ogni articolo su questo argomento mi sono imbattuto).

Gli intervalli di array statico - sono associati staticamente e l'allocazione dello spazio di archiviazione è statica.
Ho capito che lo spazio per l'array è allocato in memoria al momento della compilazione (prima del tempo di esecuzione).

Gli array fixed-dynamic array - fissi sono associati staticamente , ma l'allocazione viene eseguita in tempo di elaborazione durante l'esecuzione .
Ora non ho capito niente. Qual è il significato delle frasi in corsivo

Matrice dinamica di stack - gli intervalli di pedici sono associati dinamicamente e l'allocazione di memoria è dinamica "durante l'esecuzione". Una volta vincolati rimangono fissi durante la vita del variabile.
Non capisco cosa si intende per essere 'legato'?

Dovrei essere in grado di capire le restanti due definizioni se capisco queste tre.

So che sto chiedendo molto.
Grazie:)

Ecco un link di recente mi sono imbattuto in ciò che trovo utile per questo argomento. Chiunque sia interessato a questo argomento, dai un'occhiata. :)

    
posta jsp99 15.03.2012 - 15:24
fonte

2 risposte

4

Per elaborare la risposta di DeadMG, sembra che intendano:

  1. Array statico : un array la cui dimensione è nota e la cui memoria è allocata, al momento della compilazione. In C, potresti scrivere in ambito globale (file):

    int static_array[7];
    
  2. Corretto lo stack-dynamic array : conosci la dimensione dell'array in fase di compilazione, ma consenti che venga assegnato automaticamente nello stack (la dimensione è fissata in fase di compilazione ma lo spazio di archiviazione è allocato quando entri nel suo ambito e viene rilasciato quando lo lasci)

    void foo()
    {
      int fixed_stack_dynamic_array[7];
      /* ... */
    }
    
  3. Riempi array dinamico : non conosci la dimensione fino al runtime, ad es. C99 consente questo:

    void foo(int n)
    {
      int stack_dynamic_array[n];
      /* ... */
    }
    
  4. Fixed heap dynamic array : uguale al 2 tranne l'allocazione dell'hub esplicita

    int * fixed_heap_dynamic_array = malloc(7 * sizeof(int));
    
  5. Array dinamico di heap : puoi probabilmente indovinare questo:

    void foo(int n)
    {
      int * heap_dynamic_array = malloc(n * sizeof(int));
    }
    

È lo stesso libro di Concetti di linguaggi di programmazione ? Perché ancora una volta, queste non sono una classificazione utile dei tipi, ma riguardano solo il meccanismo di allocazione. Dopo aver passato qualsiasi di queste "diverse" cose in una funzione, la loro classificazione in questo schema è irrilevante.

    
risposta data 15.03.2012 - 16:32
fonte
0

La classificazione è sbagliata. Sono tutti matrici e di dimensioni fisse. L'unica cosa che cambia è la regione di memoria in cui sono allocati e, a volte, non è necessario conoscere la dimensione fissa fino al runtime. Queste non sono proprietà che cambiano tipo. Tutte queste cose sono esattamente la stessa cosa: un array.

    
risposta data 15.03.2012 - 15:38
fonte

Leggi altre domande sui tag