[C] Variabili globali o variabili puntatore?
Buon giorno a tutti,
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.
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
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