Dubbio funzioni in C
Ciao ragazzi!
Ho un dubbio da un pò di tempo! Quando ho una funzione,e supponiamo che questa funzione debba restituirmi due valori,non posso fare così:
Devo utilizzare i puntatori?
Cioè nel programma inserisco due variabili,e poi nella funzione sfrutto quelle variabili con i puntatori?
Ho un dubbio da un pò di tempo! Quando ho una funzione,e supponiamo che questa funzione debba restituirmi due valori,non posso fare così:
.... y= countxyz(i,l,z); .....
Devo utilizzare i puntatori?
Cioè nel programma inserisco due variabili,e poi nella funzione sfrutto quelle variabili con i puntatori?
Risposte
se vuoi passare un parametro per riferimento (cioè vuoi modificarlo), nella dichiarazione della funzione devi usare il puntatore a quella variabile (con l'asterisco), quando richiami la funzione devi passargli l'indirizzo di quella variabile (con la e commerciale, &).
A parte che se anche spiegassi cosa deve fare quella funzione e quali sono i due valori da restituire non ci dispiacerebbe, le soluzioni quando devi modificare più di un valore sono due: la prima è di utilizzare i puntatori per avere accesso alla stessa cella di memoria dallo scope della funzione, la seconda è di restituire una struttura dati personalizzata che contenga al suo interno i due valori che vuoi restituire.
"Raptorista":
A parte che se anche spiegassi cosa deve fare quella funzione e quali sono i due valori da restituire non ci dispiacerebbe, le soluzioni quando devi modificare più di un valore sono due: la prima è di utilizzare i puntatori per avere accesso alla stessa cella di memoria dallo scope della funzione, la seconda è di restituire una struttura dati personalizzata che contenga al suo interno i due valori che vuoi restituire.
E' una domanda generale,quello dovrebbe essere un esmpio!

Quando dici struttura dati personalizzata cosa intendi?
Intende dire che se la tua funzione restituisce ad esempio una stringa e un numero intero, ti crei una struttura come la seguente:
(usando ovviamente un nome migliore per la struttura) e fai restituire questa struttura dalla funzione.
typedef struct A A; struct A { int i; char *str; };
(usando ovviamente un nome migliore per la struttura) e fai restituire questa struttura dalla funzione.
Yes, apatriarca ha scritto proprio quello che intendevo.
Ah ecco! Grazie! 
Un'altra domanda, qual è la differenza tra $a++$ e $++a$ ?

Un'altra domanda, qual è la differenza tra $a++$ e $++a$ ?
++a incrementa a prima di "usarla" nell'istruzione corrente mentre a++ prima usa la variabile e poi incrementa il valore. Per esempio:
int i = 0; int A[3] = {1, 2, 3}; A[i++] += 3; // a questo punto i = 1 e A = {4, 2, 3} A[++i] += 2; // a questo punto i = 2 e A = {4, 2, 5}
Ah ecco! Grazie ragazzi!
