Newsgroup: it.comp.programmare.win32
Titolo: parametri di funzioni

Ciao a tutti, da un po' ho deciso di abbandonre il buon cecchio Visual
Basic( semplice č intuitivo), per passare al C++ Builder 4.0( meno semplice
ma molto piů potente), insomma vengo al dunque.
Questo passaggio a creato nella mia testa una confusione tale da
costringermi ha comprare ben Due testi che trattano il c++ ma non ho ancora
padronanza con esso. Le cose che proprio non capisco:
Considerate la funzione
mia_funzione(int a, int b)
{ 
b= a+ 10;
}
Come faccio a passare al primo parametro(int a) un valore, e dopo il calcolo, a farmelo restituire al secondo parametro (int b) per assegnarlo quindi alla chiamata della funzione??
Ho visto degli esempi che utilizzano return, ma funziona con la restituzione del solo valore che assume la funzione di tipo non void.
ES.
 
int mia_funzione(int a, int b)
{
int z = (a*b);
return z;
}
E se mi servono in restituzione 2 o piů valori ?
Problema 2
In visualBasic č possibile dichiarare come mebbro di una funzione un un array di stringhe, e poi alla chiamata della stessa inserire come parametro una variabile array ma senza specificare l' indice, (qundi con le parentesi vuote)
e questo basta per avere nella funzione chiamante un array uguale a quello della funzione chiamata.
In c++ come si fa ??
Mia_funzione(stringa[10][10])
{
stringa[1] ="nicola";
stringa[2] ="antonio";
stringa[3] ="paolo"; 
/* ecc.   */
}
Come si fa ha chiamare la funzione e ricevere in contenuto dell' array ??
Vi ringrazio infinitamente per l 'attenzione e spero che qualcuno mi possa chiarire le idee.
Se avete link da segnalarmi dove poter scaricare esempi o altro FATELO !
Grazie a tutti 
Nicola

Se avete link da segnalarmi dove poter scaricare esempi o altro FATELO !
... 
www.BruceEckel.com
Scarica il testo "Thinking in C++".
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------
Dovro' prendere lezioni di Internet, 
se non sai di Internet non ti considera nessuno 
(Carmen di Pietro) 
-----------------------------------------------

Come si fa ha chiamare la funzione e ricevere in contenuto dell' array ??
sempre con i puntatori
con un puntatore passi qualunque cosa, da un intero, ad un oggetto per far lanciare la bomba nucleare
tutto con soli 4 byte...
il puntatore di una tabella e' l'indirizzo al suo primo elemento (che e' 0 e non 1)
per esempio &stringa[0][0]... ma per facilitarci le cose, il C considera il nome di tabella da solo gia' come il suo indirizzo
quindi... passi    stringa
nella dichiarazione dovrai avere un parametro char * (puntatore a carattere)
poi, a seconda di come tratterai il puntatore, gestirai i vari campi della tabella, indipendentemente dalle dimensioni (spesso si passano anche queste, come valore d'accompagnamento)
beh... complicatino gestire tutto per benino (e spiegarlo in 2 righe), ci sono un sacco di piccoli accorgimenti... buona fortuna

il puntatore di una tabella e' l'indirizzo al suo primo elemento (che e' 0 e non 1)
L'indirizzo di una tabella NON e' l'indirizzo al suo primo elemento.
In C, cosi' come in C++, gli array DECADONO (con le solite tre
eccezioni specifiche) in puntatori al loro primo elemento, ma non SONO
puntatori al loro primo elemento.

puntatori al loro primo elemento.
mi piacerebbe sapere che intendi per decadono, e queste 3 regole... se non
chiedo troppo
(ci ho pensato su spesso all'analogia tra &(tbl[0]) e tbl da solo... credevo
fosse un 'aiutino di c')
se mi rispondi grazie.. ciao

fosse un 'aiutino di c')
In C, quando si dichiara un array, si sta allocando staticamente una
certa quantita' di memoria, ad esempio :
int a[10] ;
alloca staticamente 10*sizeof(int) byte sul proprio sistema.
Scrivere 
int *p = a ;
e' perfettamente lecito, in quanto a decade nel puntatore al suo primo
elemento, questo significa che, in tali circostanze, a equivale a
&a[0].
Tuttavia non e' sempre cosi'.
Ci sono tre eccezioni specifiche a questa regola. 
1. l'array e' argomento di sizeof
   Difatti, se provi a scrivere, con il nostro esempio :
   int size = sizeof( a ) ;
   ottieni la misura dell'intero array e non di un puntatore ad
intero. Questo significa che, in questo caso, a non decade nel
puntatore al suo primo elemento.
2. l'array e' un literal stringa in una inizializzazione di un altro
array.
 
   Capita spesso, in C, di scrivere :
   char p[] = "paperino" ;
   come inizializzazione di un array.
   In questa espressione, l'rvale "paperino" e' un array di 9
caratteri che non decade, tuttavia, nel puntatore al suo primo
carattere, perche' DEVE essere considerato come :
   char p[] = { 'p', 'a', 'p', 'e', 'r', 'i', 'n', 'o', '\0' } ;
3. l'array e' argomento dell'operatore unario &
   "&a", nel nostro esempio, non equivale affatto a "a", cioe' NON e'
il puntatore al primo elemento dell'array ma, dato che il tipo di "a"
e' "array-of-T" (dove T e' char in questo caso), il suo indirizzo
sara' di tipo "pointer-to-array-of-T".
E' per questo che "a" da solo, se non soggetto a queste tre regole,
puo' decadere placidamente nel puntatore al suo primo elemento, cioe'
in &a[0].

grazie 1000, ero assai curioso
non si finisce mai di scoprire come funzionano anche le cose che usi ogni
giorno
bye bye