Dubbio funzioni in C

Mrhaha
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ì:
....
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
itpareid
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, &).

Raptorista1
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.

Mrhaha
"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! :-D
Quando dici struttura dati personalizzata cosa intendi?

apatriarca
Intende dire che se la tua funzione restituisce ad esempio una stringa e un numero intero, ti crei una struttura come la seguente:
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.

Raptorista1
Yes, apatriarca ha scritto proprio quello che intendevo.

Mrhaha
Ah ecco! Grazie! :D
Un'altra domanda, qual è la differenza tra $a++$ e $++a$ ?

apatriarca
++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}

Mrhaha
Ah ecco! Grazie ragazzi! ;)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.