Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] Definizione Array

  1. #1

    [C] Definizione Array

    Salve a tutti,
    mi trovo davanti ad un problema che mi sembra molto molto banale ma che non riesco a risolvere. Devo gestire un array di cui al momento della scrittura del codice non coosco le dimensioni, ma che una volta creato non cambia mai grandezza. Con java mi basterebbe contare gli elementi e fare "int array[p];" dove p è appunto la variabile contatore. Ma C non mi permette di fare questo, mi chiede infatti come argomento dell'array necessariamente un numero e non una variabile. Come posso risolvere?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Devi usare malloc.
    Ad esempio:
    codice:
    int* arr = (int*) malloc(sizeof(int) * numero_di_elementi_letti_da_variabile);
    
    /* quando non serve più */
    free(arr);
    La parte in rosso è obbligatoria se non usi un compilatore C puro.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    credo che questo programma faccia quello che chiedi...

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char** argv) {


    int cont;
    int array[cont];


    for(cont=0; cont<=4; cont++)
    {
    array[cont]=cont;
    printf("%d", array[cont]);
    }


    return (0);
    }

    e come argomento dell'array c'è una variabile...dovrebbe andare bene dato che compila....

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da napoleone89
    credo che questo programma faccia quello che chiedi...
    Mi pare che mattia123 abbia chiesto tutt'altro..
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    E soprattutto, nel programma di napoleone cont non è inizializzata, quindi se tanto mi da tanto dovrebbe crashare in modo spettacolare circa la metà delle volte.

    E comunque l'allocazione dinamica non si può sostituire così: bisogna per forza usare malloc.
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  6. #6
    Originariamente inviato da shodan
    Devi usare malloc.
    Ad esempio:
    codice:
    int* arr = (int*) malloc(sizeof(int) * numero_di_elementi_letti_da_variabile);
    
    /* quando non serve più */
    free(arr);
    La parte in rosso è obbligatoria se non usi un compilatore C puro.
    Grazie. Ultima cosa, dopo per accedervi devo andare di arr++ giusto? non arr[i]

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Assolutamente no. Facendo arr++, modifichi di fatto il valore di arr, e quindi il puntatore non punta più all'inizio dell'array.

    Per accedere agli elementi, usi arr[i], esattamente come se fosse un vettore (i vettori sono, in effetti, dei puntatori). Una sintassi equivalente è *(arr + i).
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    117
    Originariamente inviato da napoleone89
    dovrebbe andare bene dato che compila....
    Questa è una di quelle frasi che mi fanno rabbrividire ogni volta che le sento.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.