da autodidatta sto cercando di studiare, nel poco tempo libero, le basi della programmazione in linguaggio C.
Ai più ferrati del sottoscritto, avrei da porre una domanda:
vorrei sapere che differenza sussiste nell'utilizzare delle variabili globali (ossia variabili dichiarate all'esterno di "main") o delle variabili puntatore, per permettere a delle funzioni di modificare variabili esterne alla funzione stessa.
Ad esempio questi due semplicissimi programmi (il primo utilizza variabili globali e il secondo variabili puntatore) separano la parte intera da quella frazionaria in un numero con virgola.
- Codice: Seleziona tutto
# include <stdio.h>
/* definizione variabili esterne */
int intero;
float frazionario;
/* definizione prototipo di funzione */
void separazione_intero_e_frazionario (float numero);
int main (void)
{
/* definizioni variabili interne */
float numero_decimale;
numero_decimale = 0;
/* input numero da analizzare */
printf ("Inserici un numero decimale (usare il \".\" come separatore decimale)\n");
scanf ("%f", &numero_decimale);
/* chiamata funzione di analisi */
separazione_intero_e_frazionario (numero_decimale);
/* stampa analisi */
printf ("Il numero %f si suddivide in\n", numero_decimale);
printf ("%d = parte intera\n", intero);
printf ("%f = parte frazionaria\n", frazionario);
return 0;
}
/* funzione di separazione tra intero e frazionario */
/* manipola variabili esterne */
void separazione_intero_e_frazionario (float numero)
{
/* calcolo intero e frazionario di un numero */
intero = (int) numero;
frazionario = numero - (int) numero;
}
- Codice: Seleziona tutto
# include <stdio.h>
/* definizione prototipo di funzione */
/* le variabili *p... sono i puntatori alle rispettive variabili con il medesimo nome */
void separazione_intero_e_frazionario (float numero, int *pintero, float *pfrazionario);
int main (void)
{
/* definizioni variabili interne */
int intero;
float numero_decimale, frazionario;
intero = 0;
numero_decimale = 0;
frazionario = 0;
/* input numero da analizzare */
printf ("Inserici un numero decimale (usare il \".\" come separatore decimale)\n");
scanf ("%f", &numero_decimale);
/* chiamata funzione di analisi */
separazione_intero_e_frazionario (numero_decimale, &intero, &frazionario);
/* stampa analisi */
printf ("Il numero %f si suddivide in\n", numero_decimale);
printf ("%d = parte intera\n", intero);
printf ("%f = parte frazionaria\n", frazionario);
return 0;
}
/* funzione di separazione tra intero e frazionario */
/* manipola variabili interne tramite puntatore */
void separazione_intero_e_frazionario (float numero, int *pintero, float *pfrazionario)
{
/* calcolo intero e frazionario di un numero */
*pintero = (int) numero;
*pfrazionario = numero - (int) numero;
}
Entrambi danno il medesimo risultato per cui non riesco a comprendere, in questo caso di utilizzo, la differenza tra usare una variabile globale e un puntatore.
Max
Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)






