Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C] - dichiarazione variabile globale all'interno di una funzione

    Salve a tutti,
    volevo sapere se era possibile dichiarare una variabile globale all'interno della funziona main ad esempio.
    Questo perchè dovrei usare una matrice (uguale) per 2 funzioni, ma le dimensioni di questa matrice sono dettate dall'utente e quindi la devo creare per forza all'interno della funzione dopo aver letto le dimensioni.
    Non sò se mi sono spiegato, avete capito il mio problema?
    E' fattibile come cosa?
    Grazie, ciao!
    W magica ROMA!

  2. #2

    Re: [C] - dichiarazione variabile globale all'interno di una funzione

    Originariamente inviato da skorpions
    Salve a tutti,
    volevo sapere se era possibile dichiarare una variabile globale all'interno della funziona main ad esempio.
    Questo perchè dovrei usare una matrice (uguale) per 2 funzioni, ma le dimensioni di questa matrice sono dettate dall'utente e quindi la devo creare per forza all'interno della funzione dopo aver letto le dimensioni.
    Non sò se mi sono spiegato, avete capito il mio problema?
    E' fattibile come cosa?
    Grazie, ciao!
    dichiara le varabili che citi SOPRA al main() (in modo tale che siano globali)per poi leggerle dentro ad esso e passarle cosi' alle relative funzioni!

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  3. #3
    Mi sono spiegato male
    allora....
    La matrice è di per sè variabile, ossia non sò a priori la dimensione di essa che può essere una 3x3 4x4 100x30 non sò! la dimensione viene letta da tastiera, perciò la devo dichiarare per forza dentro al main e non posso dichiararla all'esterno altrimenti dovrei mettere un numero a caso (molto grande che però non sono sicuro sia grande abbastanza) mi spiego meglio ora?
    Grazie!
    ciao
    W magica ROMA!

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Per dimensionare le matrici in modo dinamico si dichiarano come puntatori al tipo e si utilizza la funzione malloc(). Ad esempio, questo codice crea un array di interi di dimensione deciso dall'utente:
    codice:
    int *mioArray;
    int num;
    ... // Leggo la variabile num
    mioArray = (int*) malloc(num * sizeof(int));
    ...
    // Ora riempio l'array
    for (i=0; i<num; i++) {
       *mioArray++ = i;
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    concordo con l'esempio di sopra.. se la fai globale cioè fuori dal main le dimensioni le dovresti mettere tu... e nel main visto che lavori con C le variabili e i vettori le puoi dichiarare solo all'inizio... ma visto che tu prima devi fare una scanf per chiedere quanto lo vuole grosso la dichiarazione non sarebbe piu la prima istruzione nel main.. e quindi non funzionerebbe...
    In questo caso la malloc è ottima...
    "Penso che nel mondo ci sia mercato per quattro o cinque computer"... Thomas Watson, presidente della IBM, 1943

  6. #6
    Ma una cosa non mi è chiara...
    Le matrici sono bidimensionali quindi hanno bisogno di 2 coordinate, con questo metodo dovrei creare un puntatore per ogni riga della matrice?
    Ossia dovrei fare un ciclo che mi crei tutte le variabili puntatori necessarie perla matrice?
    O sbaglio?
    Grazie!
    W magica ROMA!

  7. #7
    int *p;
    p= matrice
    *p[0][0] equivale a matrice [0][0]
    *p[3][2] equivale a matrice [3][2]
    tu basta che passi il puntatore

  8. #8
    Originariamente inviato da kentaromiura
    int *p;
    p= matrice
    *p[0][0] equivale a matrice [0][0]
    *p[3][2] equivale a matrice [3][2]
    tu basta che passi il puntatore
    Non ho capito....
    p = matrice

    matrice cosa sarebbe!?
    Non capisco proprio scusami
    puoi spiegarmi?
    Grazie!
    ciao
    W magica ROMA!

  9. #9
    supponendo una matrice statica
    int matrice[10][10];
    int *p;
    p=matrice
    *p[1][1] equivale a matrice[1][1]

    ..
    naturalmente la stessa cosa vale per le matrici create a runtime

  10. #10
    Originariamente inviato da kentaromiura
    supponendo una matrice statica
    int matrice[10][10];
    int *p;
    p=matrice
    *p[1][1] equivale a matrice[1][1]

    ..
    naturalmente la stessa cosa vale per le matrici create a runtime
    Capito thx!
    molto gentile.
    Proverò
    ciao!
    W magica ROMA!

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.