|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2008
Città: Trevis
Messaggi: 2251
|
[C] funzione che ritorna una struttura
ciao, ho scritto questo programma semplice ma non so se quello che cerco sia possibile, ovvero fare una funzione che si possa eguagliare ad una struct.... quindi dovrebbe dare in output una struct
Codice:
#include <stdio.h> struct boh{ int p1; }primo; struct boh funzione(struct boh x) { x.p1=2; } int main(){ primo.p1=5; primo = funzione(primo); //sta assegnazione è totalmente inutile, alla fine stampa sempre 5 anzichè 2 printf("%d", primo.p1); return 0; } |
![]() |
![]() |
![]() |
#2 | |
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21813
|
Quote:
quindi o la ritorni (e devi ritornarla visto che hai scritto una funzione e non una procedura) oppure ti scrivi una procedura (funzione di tipo void) e passi la struttura per riferimento (&)
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2008
Città: Trevis
Messaggi: 2251
|
Grazie fazz, hai ragione, era inutile la funzione dato che non ritornava niente.
![]() ![]() Ok, per avere quello che cercavo bastava aggiungere return x. Codice HTML:
struct boh funzione(struct boh x) { x.p1=3; return x; } ...immaginando di avere un codice simile: struct boh { .... }caso1, caso2; se avessi una funzione organizzata come quella all'inizio di sto post e facessi: caso1=funzione(caso1); così vale come se fosse fatta coi puntatori per riferimento caso2=funzione(caso1); così la struct caso1 non viene modificata, ma si modifica una struct ausiliaria che qui ho chiamato caso2 Coi puntatori secondo me è più complesso, per il resto va beh ciao! Ultima modifica di TecnologY : 30-11-2012 alle 21:37. Motivo: corretto errore |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:05.