[C] Puntatori e strutture
Ciao a tutti!
Non riesco a risolvere questo esercizio riguardante la programmazione C.
Testo:
Definire un nuovo tipo di dati "Float2" che aggrega 2 dati floating point e successivamente definire una funzione C che, dato un puntatore ad un dato Float2, visualizzi le variabili membro floating point del dato puntato.
Ho iniziato a scrivere il codice, però non riesco a capire come scrivere la funzione. Devo utilizzare un puntatore ad un dato della struttura Float2, e visualizzare il suo valore.
Quello che non riesco a capire è come far puntare alla struttura il mio puntatore. Riuscite a darmi qualche suggerimento in merito
Grazie
Ciaoo
Non riesco a risolvere questo esercizio riguardante la programmazione C.
Testo:
Definire un nuovo tipo di dati "Float2" che aggrega 2 dati floating point e successivamente definire una funzione C che, dato un puntatore ad un dato Float2, visualizzi le variabili membro floating point del dato puntato.
Ho iniziato a scrivere il codice, però non riesco a capire come scrivere la funzione. Devo utilizzare un puntatore ad un dato della struttura Float2, e visualizzare il suo valore.
typedef struct { float n1; float n2; } Float2; float funz (float *punt) { *punt=&Float2; }
Quello che non riesco a capire è come far puntare alla struttura il mio puntatore. Riuscite a darmi qualche suggerimento in merito

Grazie
Ciaoo

Risposte
Ma vi danno i problemi senza spiegarvi la notazione?
Ho avuto difficoltà a scriverti le varie cose senza darti la soluzione. Puoi ovviamente anche stampare direttamente senza usare variabili temporanee, anche se i compilatori sono sufficientemente furbi da sapere che possono farne a meno.
Se sei un fanatico dell'uso dei const puoi ovviamente fare così:
Ho avuto difficoltà a scriverti le varie cose senza darti la soluzione. Puoi ovviamente anche stampare direttamente senza usare variabili temporanee, anche se i compilatori sono sufficientemente furbi da sapere che possono farne a meno.
void funz(Float2 *punt) { float x = punt->n1; float y = punt->n2; /* * Visualizza x e y */ }
Se sei un fanatico dell'uso dei const puoi ovviamente fare così:
void funz(Float2 const * const punt) { float const x = punt->n1; float const y = punt->n2; /* * Visualizza x e y */ }
Ciao!
Purtroppo questa parte dei puntatori è stata spiegata molto velocemente senza tanti esempi. Giusto il classico esercizio da far cambiare valore ad un intero puntato!
Può andare bene questa soluzione completa con anche il main?
In pratica utilizzo la freccia -> per richiamare i singoli valori all'interno della struttura giusto?
Grazie mille
Purtroppo questa parte dei puntatori è stata spiegata molto velocemente senza tanti esempi. Giusto il classico esercizio da far cambiare valore ad un intero puntato!
Può andare bene questa soluzione completa con anche il main?
#include <stdio.h> typedef struct { float n1; float n2; } Float2; void funz(Float2 *punt) { float x = punt->n1; float y = punt->n2; printf("%.2f - %.2f", x,y); } int main () { Float2 v; v.n1=15.47; v.n2=1.47; Float2 *p=&v; funz(p); printf("\n\n"); return 0; }
In pratica utilizzo la freccia -> per richiamare i singoli valori all'interno della struttura giusto?
Grazie mille

Il codice direi che va bene. Per la tua domanda la risposta è si e no. La freccia si usa nel caso in cui tu abbia un puntatore a struttura, altrimenti si usa il punto.
Ciao!
Perfetto grazie mille per l'aiuto
Ciaoo!
Perfetto grazie mille per l'aiuto

Ciaoo!