PDA

Visualizza la versione completa : funzioni e typedef


Pagnottazzo
21-11-2008, 20:36
Buongiorno a tutti.

Sto cercando di imparare l'uso delle funzioni, in un constesto in cui restituiscono una struct, ma non tutto mi e' chiaro. Vorrei domandare aiuto nel capire che cosa no va nel seguente codice.

Grazie mille per l'aiuto.
Pagnottazzo





#include <stdio.h>

typedef struct m
{
int f1;
int f2;
} tp;

main()
{



tp a;
tp b;
int i;

a.f1 = 1000;
a.f2 = 233;

printf("%d %d \n", a.f1, a.f2);

b = init();
printf("%d %d \n", b.f1, b.f2);


scanf("%d \n", &i);
}



struct m init()
{
tp M;
int a = 20;
int b = 24;
M.f1 = a;
M.f2 = b;
return(M);


// int w = 3800;
// return(w);
}

menphisx
21-11-2008, 22:57
#include <stdio.h>

typedef struct m
{
int f1;
int f2;
} tp;

void init(tp *pM);

int main(void)
{

tp a;
tp b;
int i;

a.f1 = 1000;
a.f2 = 233;

printf("%d %d \n", a.f1, a.f2);

init(&b);
printf("%d %d \n", b.f1, b.f2);

scanf("%d \n", &i);

return 0;

}

void init(tp *pM)
{

pM->f1 = 20;
pM->f2 = 24;

}

boll85
21-11-2008, 22:59
Cosi funziona...

#include <stdio.h>

typedef struct m{
int f1;
int f2;
} tp;

struct m init(){
tp M;
int a = 20;
int b = 24;
M.f1 = a;
M.f2 = b;
return(M);
//int w = 3800;
//return(w);
}

main(){
tp a;
tp b;
int i;

a.f1 = 1000;
a.f2 = 233;

printf("%d %d \n", a.f1, a.f2);

b = init();
printf("%d %d \n", b.f1, b.f2);


scanf("%d \n", &i);
return;
}

Devi solo implementare la funzione che usi nel main prima, oppure scriverne solo il prototipo (cioè il valore di ritorno e i parametri che gli devi passare struct m init(); ) sopra e l'implementazione sotto
:ciauz:

menphisx
22-11-2008, 13:24
Anche la mia funziona :stordita: ,
ed è più corretta :madai!?:

boll85
22-11-2008, 15:34
scusa...mentre scrivevo non mi sono accorta che nel frattempo avevi risposto pure tu, non volevo dire che il tuo codice era sbagliato....

menphisx
22-11-2008, 15:35
Non l'ho visto, scusa :zizi:

Pagnottazzo
24-11-2008, 12:19
Originariamente inviato da boll85
Cosi funziona...


Devi solo implementare la funzione che usi nel main prima, oppure scriverne solo il prototipo (cioè il valore di ritorno e i parametri che gli devi passare struct m init(); ) sopra e l'implementazione sotto
:ciauz:


Grazie mille!!!!!!
Pagnottazzo

Loading