[Tech] C che stress!!!!

Gianni Bianchini giannibi@firenze.linux.it
Lun 2 Apr 2001 16:00:19 CEST


On Mon, Apr 02, 2001 at 11:11:03AM -0000, Ombra Rossa wrote:

> Sto' facendo un programmino per divertimento, quindi non e' nulla di 
> urgente, avrei bisogno di
> poter dare ad un array di caratteri bi-dimensionale una grandezza arbitraria 
> data dall'input
> dell'utente. Avevo pensato ad una funzione, ma l'array non e' visibile dal 
> corpo main del
> programma.

Le variabili locali in stack di una funzione non possono essere visibili
all'esterno. 
Utilizzandole solo all'interno, quindi, puoi dichiararle anche di
dimensioni variabili dipendenti dai parametri della funzione.

pippo(a,b)
int a;
int b;
{
  char arr[a][b];

  ...

}

Non puoi farlo con variabili static (la dimensione deve essere nota
all'atto della compilazione). 

La soluzione migliore e' comunque allocare un vettore di memoria di
dimensione RIGHE*COLONNE e indicizzarlo come suggerisce Carlo Baffa.

> Non so' se si puo' dichiarare una funzione che come renda un 
> array.
> E' possibile?

Puo' restituire un puntatore ad una zona di memoria allocata nella
funzione. Non ha senso fargli restituire il puntatore ad una matrice
definita come in pippo(), poiche' questa viene "persa" all'uscita dalla
funzione. 

> Certo potrei dichiararlo nel main, ma poi come gli cambio gli indici?? Si 
> puo' fare?

Se con questo intendi "ridichiarare" la variabile, no.

Ciao.
Gianni.


--
   Gianni Bianchini - giannibi@firenze.linux.it
                      giannibi@iname.com





Maggiori informazioni sulla lista flug-tech