Vai al contenuto

Variabile globale c++


Messaggi raccomandati

Salve a tutti ragazzi,

Ho bisogno di un aiuto in quanto il problema che sto per esporvi non è spiegato in maniera esaustiva nel mio testo e non sono riuscito a trovare qualcosa nemmeno nel web.

Il mio problema è il seguente:

In una stesura di un programma in c++ ho bisogno di creare all'interno del programma main una variabile di tipo definito da me e composta da vettori di caratteri (char vettore [dim]);

Questa variabile poi la devo richiamare in un sotto programma . . .quindi la mia idea, inizialmente, era quella di dichiararmi sia la dimensione che la definizione del tipo in maniera globale;ma visto che ho bisogno di modificare di volta in volta la dimensione del vettore che compone questo tipo il programma di da errore.

Girando un pò sul web ho letto che una variabile locale uguale a quella globale, se ridefinisce il valore,oscura la valenza della variabile globale in altre parole se mi dichiaro globalmente la dimensione della stringa uguale a 5 e poi nel programma principale e/o nel sottoprogramma me lo ridefinisco dovrebbe cambiare. . .ma nonostante questo ho provato in tutte le salse ma il programma non ne vuole proprio sapere di partire.

Quindi concludo chiedendovi se qualcuno di voi utenti sia ingrato di spiegarmi, attraverso un segmento di programma come esempio, come risolvere la questione.

Grazie in anticipo e spero di essere stato abbastanza chiaro XD ciaoooo =D

Link al commento
Condividi su altri siti

Le variabili globali in generale sono sconsigliate. Se da main() devi richiamare un'altra funzione, potresti passare all'altra funzione l'indirizzo base dell'array e un intero contenente la dimensione.

 

main()

{

...

int dim = 100;

char vettore[dim];

...

funzione(&vettore[0], dim);

...

}

 

void funzione(char* array, int dimensione)

{

...

int i;

 

for (i=0; i<dimensione; i++)

array = ...

...

}

Link al commento
Condividi su altri siti

scusate mi spiegate dove stanno i vettori?

 

Io vedo solo array e puntatori.

 


// resizing vector

#include <iostream>

#include <vector>



int main ()

{

 std::vector<int> miovettore;



 // setto contenuto:

 for (int i=1;i<10;i++) miovettore.push_back(i);



 miovettore.resize(5);

 miovettore.resize(8,100);

 miovettore.resize(12);



 std::cout << "miovettore contiene:";

 for (int i=0;i<miovettore.size();i++)

   std::cout << ' ' << miovettore[i];

 std::cout << '\n';



 return 0;

}

Questo é un esempio di vettori in C++ presente in molti libri di testo.

Non vedo la necessità di definire la dimensione del vettore perché questà va letta a seconda della dimensione, quindi basta riallocale man mano che sia necessario.

Ho inserito la funzione resize perché ritengo che il tuo errore sia proprio li.

Modificato da RyujiAndy
Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

Giochi in Uscita



  • Community Hive Community Hive

    Community Hive allows you to follow your favorite communities all in one place.

    Follow on Community Hive
  • Utenti

    Non ci sono membri da mostrare

×
×
  • Crea Nuovo...