[C] Strutture
salve ragazzi,ho una funzione che mi dovrebbe restituire 2 valori(quindi dovrei usare una struct).dato che non trovo niente a riguardo,potete mica farmi un esempio stupido di prototipo di come tale funzione restituisca una struct con due valori?
grazie mille
grazie mille
Risposte
typedef struct pair_t pair_t; struct pair_t { int a; float b; }; pair_t fun() { // requires a recent C compiler.. return (pair_t){.a=1, .b=1.0f}; // Old version which also work in C++ pair_t p = {1, 1.0f}; return p; }
"apatriarca":typedef struct pair_t pair_t; struct pair_t { int a; float b; }; pair_t fun() { // requires a recent C compiler.. return (pair_t){.a=1, .b=1.0f}; // Old version which also work in C++ pair_t p = {1, 1.0f}; return p; }
grazie ma non mi compila...
Non è un esempio completo e il corpo della funziona mostra due alternative a seconda che il compilatore supporti uno standard abbastanza recente. Se ci dici che deve fare questa funzione ti scrivo un esempio migliore.
"apatriarca":
Non è un esempio completo e il corpo della funziona mostra due alternative a seconda che il compilatore supporti uno standard abbastanza recente. Se ci dici che deve fare questa funzione ti scrivo un esempio migliore.
si ho per esempio una struct che contiene due interi a e b (di cui non so il valore)
e poi una funzione che calcola il valore di a e b(es a=5 e b=6)
questa funzione restituisce i valori di a e b alla struct;
poi vabbè stampo un array di struct(questo so farlo).
questo sarebbe il mio scopo...non capisco molto bene come scrivere il codice....
Continua a non essermi molto chiaro il tuo problema. Che compilatore stai usando? Il seguente codice dovrebbe compilare senza problemi. Ti ho scritto una funzione che riceve una struttura che rappresenta un vettore bidimensionale e restituisce un secondo vettore ruotato di un certo numero di gradi.
#include <stdio.h> #include <math.h> typedef struct vec2_t vec2_t; struct vec2_t { double x, y; }; vec2_t rotate(vec2_t v, double angle) { vec2_t result = { v.x * cos(angle) + v.y * sin(angle), v.x * sin(angle) + v.y * cos(angle) }; return result; } int main(int argc, char **argv) { vec2_t v = { 1.0, 0.0 }, w = { 0 }; printf("%f %f\n", v.x, v.y); w = rotate(v, 1.57079632679); printf("%f %f\n", w.x, w.y); return 0; }