Esempi C
Esempi C
Valerio Lacagnina
Linguaggio C - Esempi
/*****************************************************/
/* stampa.c */
/* Primo programma in C: Stampa un messaggio a video */
/*****************************************************/
#include <stdio.h>
void main()
{ /* Inizio del main */
printf("Questa e' la prima stampa");
/* funzione di stampa */
} /* Fine del main */
Output di stampa.c:
/****************************************************/
/* stampa2.c */
/* Stampa due messaggi a video */
/****************************************************/
#include <stdio.h>
void main()
{ /* Inizio del main */
printf("Questa e' la prima stampa\n");
printf("Questa e' la seconda stampa\n");
/* caratteri escape
\n ritorno a capo
\t tabulatore
\\ backslash
\" virgolette
\' apice
\b backspace*/
} /* Fine del main */
Output di stampa2.c:
/****************************************************/
/* Nome programma: arearet1.c */
/* programma che calcola l'area di un rettangolo. */
/* Uso di costanti intere */
/****************************************************/
#include <stdio.h>
void main()
{ /* Inizio del main */
int base,altezza,area;
/* tipo funzione byte intervallo
void nullo 0 nessuno
char carattere 1 -128, +127
int intero 2 -32768,+32767
float virgola mobile 4 3.4E-38, 3.4E+38
double virgola mobile 8 1.7E-308, 1.7E+308
*/
base = 4;
altezza = 3;
area = base * altezza;
Output di arearet1.c:
/******************************************/
/* Nome programma : arearet2.c */
/* Questo programma consente di calcolare */
/* l'area di un rettangolo inserendo la */
/* base e l'altezza */
/******************************************/
#include <stdio.h>
void main()
{ /* Inizio del main */
int base,altezza,area;
Output di arearet2.c:
/******************************************/
/* Nome programma : areatri.c */
/* Calcolo dell'area di un triangolo con */
/* input */
/******************************************/
#include <stdio.h>
void main()
{ /* Inizio del main */
int base,altezza;
float area;
Output 1 di areatri.c:
Output 2 di areatri.c:
/***************************************/
/* Nome programma : tipi.c */
/* I tipi fondamentali */
/* int, float, double, char */
/***************************************/
#include <stdio.h>
void main()
{
int a;
float c;
double d;
char e;
char f[10];
printf("Inserisci un int\n");
scanf("%d",&a);
printf("Hai inserito l'int %d\n\n",a);
printf("Inserisci un float\n");
scanf("%f",&c);
printf("Hai inserito il float %f\n\n",c);
printf("Inserisci un double\n");
scanf("%lf",&d);
printf("Hai inserito il double %lf\n\n",d);
printf("Inserisci un carattere\n");
scanf("\n%c",&e);
printf("Hai inserito il carattere %d\n\n",e);
Output di tipi.c:
Inserisci un int
13
input dell’utente
Hai inserito l'int 13
Inserisci un float
1.45 input dell’utente
Inserisci un double
-3.546332 input dell’utente
Inserisci un carattere
a input dell’utente
/***************************************************************/
/* Nome programma : uso_cast.c */
/* In questo programma si introduce l'uso dell'operatore */
/* unario "cast". Formato: (nome del tipo) espressione */
/* "espressione" viene convertita nel tipo specificato */
/***************************************************************/
#include <stdio.h>
#include <math.h>
void main()
{
int num_int;
double ris;
num_int = 15;
Output di uso_cast.c:
ris = 3.872983
num_int = 15
/****************************************************/
/* Nome programma: if0.c */
/* if-else */
/****************************************************/
/* if (condizione) istruzioni1;
else istruzioni2; N.B.: l'else e' opzionale */
#include <stdio.h>
void main()
{
int a,b;
printf("Inserire: a b\n");
scanf("%d %d",&a,&b);
if (a > b)
printf("Lo scarto (if) e' %d\n",a-b); /*dipende dall'if*/
else /* equivale ai casi b > a oppure b == a */
printf("Lo scarto (else) e' %d\n",b-a);/*dipende da else*/
printf("a=%d e b=%d\n",a,b); /* Non dipende da if ne' da else*/
} /* Fine del main */
Output 1 di if0.c:
Inserire: a b
5 3 input dell’utente
Output 2 di if0.c:
Inserire: a b
5 12 input dell’utente
Output 3 di if0.c:
Inserire: a b
7 7 input dell’utente
/******************************************************************/
/* Nome programma : if1.c */
/* if-else. Istruzioni semplici e composte. */
/******************************************************************/
#include <stdio.h>
void main()
{
int x;
x=5;
printf("************************ CASO 1 ***********************\n");
if ( x > 3 )
printf("Istruzione di stampa dipendente dalla condizione x>3 \n");
printf("Istruzione di stampa indipendente dalla condizione x>3 \n");
if ( x < 3 )
printf("Istruzione di stampa dipendente dalla condizione x<3 \n");
printf("Istruzione di stampa indipendente dalla condizione x<3 \n\n");
if ( x > 4 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x>4 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x>4 \n");
}
if ( x < 4 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x<4 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x<4 \n");
}
if ( x > 7 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x>7 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x>7 \n");
}
else printf("else relativo a if (x>7) \n");
if ( x < 7 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x<7 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x<7 \n");
}
else printf("else relativo a if (x<7) \n");
if ( x < 8 )
{
printf("Prima istruzione di stampa dipendente dalla cond. x<8 \n");
printf("Seconda istruzione di stampa dipendente dalla cond.x<8 \n");
}
else
{
printf("Prima istruzione nell'else di if (x<8) \n");
printf("Seconda istruzione nell'else di if (x<8) \n");
}
}
Output di if1.c:
/****************************************************************/
/* Nome programma : if2.c */
/* if annidati */
/****************************************************************/
#include <stdio.h>
void main()
{
int x,y;
/* LETTURA DATI */
printf("Introduci un intero x=");
scanf("%d",&x);
printf("Introduci un intero y=");
scanf("%d",&y);
if ( x > 5 )
if ( x > y )
printf("%d > %d\n",x,y);
else
printf("Sono nell'else di if ( x > y )\n");
Output 1 di if2.c:
3 e 2 sono inseriti in input
Output 2 di if2.c:
7 e 9 sono inseriti in input
Output 3 di if2.c:
10 e 6 sono inseriti in input
/****************************************************************/
/* Nome programma: equaz2.c */
/* Il seguente programma chiede all'operatore 3 numeri reali */
/* a, b, e c */
/* e calcola le eventuali radici dell'equazione di secondo grado*/
/****************************************************************/
#include <stdio.h>
#include <math.h> /* header file delle funzioni matematiche */
void main()
{
float a,b,c; /*coefficienti dell'equazione */
double delta,x1,x2;/*delta ed eventuali radici dell'equazione*/
if (a == 0.0)
printf ("L'equazione in esame non e' di secondo grado\n");
else
{
delta = b * b - 4 * a * c;
if (delta < 0.0)
printf ("L'equazione non ammette soluzioni reali !\n");
else
{
x1 = (-b-sqrt(delta))/ (2*a);
printf("\nLa prima radice e' x1 = %f\n",x1);
x2 = (-b+sqrt(delta))/ (2*a);
printf("La seconda radice e' x2 = %f\n",x2);
}
}
}
Output 1 di equaz2.c:
Primo coefficiente a = 1
Secondo coefficiente b = -5
Terzo coefficiente c = 6
1, -5 e 6 sono inseriti in input
Output 2 di equaz2.c:
Primo coefficiente a = 0
Secondo coefficiente b = -5
Terzo coefficiente c = 6 0, -5 e 6 sono inseriti in input
Output 3 di equaz2.c:
Primo coefficiente a = 2
Secondo coefficiente b = 4
Terzo coefficiente c = 3 0, -5 e 6 sono inseriti in input
/****************************************************************/
/* Nome programma: switch.c */
/* L'istruzione switch e' una struttura di scelta plurima che */
/* controlla se un'espressione assume un valore all'interno di */
/* un certo insieme di costanti intere. */
/****************************************************************/
#include <stdio.h>
void main()
{
int a,b,c;
Output 2 di switch.c:
Inserisci 3 numeri interi separati da spazio:
2 6 4 input
Somma = 12
Output 2 di switch.c:
Somma = Dieci
/****************************************************************/
/* Nome programma : incrdecr.c */
/* Operatori di incremento e di decremento in notazione */
/* postfissa e prefissa */
/****************************************************************/
#include <stdio.h>
void main()
{
int c,c_iniz,c_fin;
c=4;
c++;
printf("c=%d\n",c);
c=4;
++c;
printf("c=%d\n",c);
c_iniz=0;
c_fin = c_iniz++;
printf("c_fin=%d c_iniz=%d (notazione postfissa)\n",c_fin, c_iniz);
c_iniz=0;
c_fin = ++c_iniz;
printf("c_fin=%d c_iniz=%d (notazione prefissa)\n",c_fin, c_iniz);
} /* END MAIN PROGRAM */
Output di incrdecr.c:
c=5
c=5
c_fin=0 c_iniz=1 (notazione postfissa)
c_fin=1 c_iniz=1 (notazione prefissa)
/*****************************************************/
/* Nome Programma : maxfor1.c */
/* Questo programma chiede in input n numeri interi */
/* e ne trova il valore del piu' grande e la sua */
/* posizione all'interno del vettore */
/* (se ci fossero piu' massimi, troverebbe il primo) */
/*****************************************************/
/* Il costrutto del FOR e' : for (espr_1; espr_2; espr_3)
istruzioni;
#include <stdio.h>
void main()
{
int i;
int max, pos_max;
int num[10];
/* STAMPA DELL'ELABORAZIONE */
printf("Il massimo e' %d ",max);
printf("sulla componente numero %d\n", pos_max);
Output di maxfor1.c:
/*****************************************************/
/* Nome programma : maxfor2.c */
/* Questo programma chiede in input n numeri interi */
/* e ne trova il valore del piu' grande e la sua */
/* posizione all'interno del vettore */
/* (se ci fossero piu' massimi, troverebbe l'ultimo) */
/* Uso delle COSTANTI SIMBOLICHE e del costrutto FOR */
/* #define NOME testo da sostituire */
/*****************************************************/
#include <stdio.h>
void main()
{
int i;
int max, pos_max;
int num[DIMENSIONE];
Output di maxfor2.c:
/*****************************************************/
/* Nome programma : maxwhile.c */
/* Questo programma chiede in input n numeri interi */
/* e ne trova il valore del piu' grande e la sua */
/* posizione all'interno del vettore */
/* (se ci fossero piu' massimi, troverebbe il primo) */
/*****************************************************/
/* while(condizione) istruzioni;
#include <stdio.h>
void main()
{
int i;
int max, pos_max;
int num[10];
/* STAMPA DELL'ELABORAZIONE */
printf("\nIl massimo e' %d ",max);
printf("sulla componente numero %d\n", pos_max);
} /* END MAIN PROGRAM */
Output di maxwhile.c:
/*****************************************************/
/* Nome programma : maxdowhi.c */
/* Questo programma chiede in input n numeri interi */
/* e ne trova il valore del piu' grande e la sua */
/* posizione all'interno del vettore */
/* (se ci fossero piu' massimi, troverebbe il primo) */
/*****************************************************/
/* do istruzioni; while(condizione);
#include <stdio.h>
void main()
{
int i;
int max, pos_max;
int num[10];
do
{
printf("Elemento[%d]=",i);
scanf("%d",&num[i]);
i=i+1;
} while (i<10);
Output di maxdowhi.c:
/****************************************************************/
/* Nome programma : media.c */
/* Programma che calcola la somma e il valore medio di numeri */
/****************************************************************/
#include <stdio.h>
void main()
{
int numero; /* Numero inserito dall'utente */
int totale = 0; /* Somma dei numeri inseriti */
int conta = 0; /* Contatore dei numeri inseriti */
do
{
scanf("%d", &numero);
totale += numero; /* Ossia: totale = totale + numero */
if(numero == 0)
{
printf("Grazie. Fine routine.\n");
if (conta==0) conta=1;
}
else conta++;
} while (numero != 0)
Output1 di media.c:
Inserisci 0 per finire
3 Inizio inserimento numeri
5
7
3
1
0 Fine inserimento numeri
Grazie. Fine routine.
La somma totale e' 19
Il valore medio e' 3.800000
Output2 di media.c:
Inserisci 0 per finire
0 Unico valore immesso
Grazie. Fine routine.
La somma totale e' 0
Il valore medio e' 0.000000
/*******************************/
/* Nome programma : breakcon.c */
/* Istruzioni break e continue */
/*******************************/
#include <stdio.h>
#define DIM 5
void main()
{
int i,conta=0;
int a[DIM];
/**********************************************************/
/* L'istruzione break provoca un'uscita incondizionata da */
/* un for, un while oppure un do */
/**********************************************************/
for (i=5;;i++)
{
if (i==11) break;
printf("i=%d\n",i);
}
Output1 di media.c:
i=5
i=6
i=7
i=8
i=9
i=10
/****************************************************************/
/* Nome programma : puntat0.c */
/* l'operatore unario & fornisce l'indirizzo di un oggetto */
/* l'operatore unario * e' detto operatore di indirezione e */
/* quando viene applicato ad un puntatore esso accede allo */
/* oggetto puntato */
/****************************************************************/
#include <stdio.h>
void main()
{
int intero;
int *p_intero;
intero = 10;
p_intero = &intero;
Output di puntat0.c:
/****************************************************************/
/* Nome programma : puntat1.c */
/* Stampa contenuto e indirizzo di una variabile di tipo intero */
/* Stampa contenuto e indirizzo di un puntatore a intero */
/****************************************************************/
#include <stdio.h>
void main()
{
int var_int = 10;
int *punt_int;
punt_int = &var_int;
printf("\nDopo l'istruzione: punt_int = &var_int;\n\n");
Output di puntat1.c:
/****************************************************************/
/* Nome programma: vett_pun.c */
/* Puntatori e vettori */
/****************************************************************/
#include <stdio.h>
#define DIMENSIONE 6
void main()
{
int a[DIMENSIONE];
int i;
int *punt_int;
punt_int = &a[0];
printf("a[0] (attraverso punt_int)=%d\n",*punt_int);
*punt_int = *punt_int + 1;
printf("a[0] (dopo incremento *punt_int)=%d\n",a[0]);
printf("\n************************************************\n");
printf("a[5] = %d\n",a[5]);
printf("Introdurre un nuovo valore per a[5] -->");
scanf("%d",a+5);
printf("a[5] = %d\n",a[5]);
printf("\n***********************************************\n");
Output di vett_punt.c:
a[0]=0
a[1]=10
a[2]=20
a[3]=30
a[4]=40
a[5]=50
***********************************************
a[0] (attraverso punt_int)=0
a[0] (dopo incremento *punt_int)=1
***********************************************
Indirizzo ottenuto con &a[0] --> 51e10
Indirizzo ottenuto con a --> 51e10
***********************************************
Dopo punt_int++; *punt_int = 10
Dopo punt_int += 2; *punt_int = 30
***********************************************
a[5] = 50
Introdurre un nuovo valore per a[5] -->12 input dell’utente
a[5] = 12
***********************************************
/****************************************************************/
/* Nome programma : puntat2.c */
/* incrementare un puntatore ... */
/****************************************************************/
#include <stdio.h>
#define DIM 10
void main()
{
int k;
int vett_int[DIM];
int *pint1, *pint2;
char vett_car[DIM];
char *pcar1, *pcar2;
pint2++;
printf("Indirizzo di 2 int consecutivi\n");
printf("Indirizzo pint1 --> %x\n",pint1);
printf("Indirizzo pint2 --> %x\n\n",pint2);
Output di puntat2.c:
vett_int[0] = 10
vett_int[1] = 11
vett_int[2] = 12
vett_int[3] = 13
vett_int[4] = 14
vett_int[5] = 15
vett_int[6] = 16
vett_int[7] = 17
vett_int[8] = 18
vett_int[9] = 19
vett_int[0] = 10 = 10
/****************************************************************/
/* Nome programma: func1.c */
/* Una semplice funzione: countdown per lo Shuttle */
/****************************************************************/
#include <stdio.h>
#define WARNING -1
void main(void)
{
int contatore = 10;
int get_status(void)
{
return WARNING;
}
Output di func1.c:
Ricevuto warning
Countdown fermato a t=10
Output2 di func1.c:
int get_status(void) 10
{ 9
return 1; ...
} 1
Shuttle lanciato
/****************************************************************/
/* Nome programma: func2.c */
/* Calcola l'IVA sul prezzo di acquisto */
/****************************************************************/
#include <stdio.h>
#define TASSO 0.19 /* IVA */
int main(void)
{
printf("Inserire il prezzo di vendita: ");
scanf("%f", &valore);
ammontare_tassa = tassa(valore);
totale = valore + ammontare_tassa;
Output di func2.c:
/****************************************************************/
/* Nome programma: funzioni.c */
/* In questo programma una funzione utilizza un'altra funzione */
/****************************************************************/
#include <stdio.h>
void Funz1(void);
void Funz2(void);
void main(void)
{
Funz1();
Funz2();
} /* Fine void main(void) */
void Funz1(void)
{
printf("Sono nella funzione Funz1()\n");
Funz2();
printf("Esco da Funz1()\n\n\n\n");
}
void Funz2(void)
{
printf("Sono nella funzione Funz2()\n");
}
Output di funzioni.c:
/****************************************************************/
/* Nome programma : param.c */
/* Osservazione sui parametri */
/****************************************************************/
#include <stdio.h>
void main(void)
{
int param;
param = 21;
Prova(param);
printf("Valore di param --> %d (Nel main)\n",param);
Output di param.c:
/****************************************************************/
/* Nome programma : swap1.c */
/* Uso dei parametri passati per valore */
/****************************************************************/
#include <stdio.h>
void main(void)
{
int num1, num2;
temp = x;
x = y;
y = temp;
printf("\n\nIn Swap \nx = %d\t y = %d",x,y);
} /* End della funzione Swap */
Output di swap1.c:
In Swap
x = 4 y = 5
Dopo la Swap
num1 = 5 num2 = 4
/****************************************************************/
/* Nome programma: swap2.c */
/* Uso dei parametri passati per indirizzo */
/****************************************************************/
#include <stdio.h>
void main(void)
{
int num1, num2;
temp = *x;
*x = *y;
*y = temp;
} /* End della funzione Swap */
Output di swap2.c:
input
Introduci un numero intero num2 = 10
input
Dopo la Swap
num1 = 10 num2 = 5
/****************************************************************/
/* Nome programma: varlocal.c */
/* Differenze fra variabili locali e globali */
/****************************************************************/
#include <stdio.h>
void Prova(void);
int i;
void main(void)
{
i = 21;
Prova();
printf(" Valore di i --> %d (Nel main)\n",i);
} /* End main() */
void Prova(void)
{
int i;
i = 10;
printf(" Valore di i --> %d (Nella function Prova)\n",i);
}
Output di varlocal.c:
/****************************************************************/
/* Nome programma : locglob.c */
/* Uso delle variabili locali e globali */
/****************************************************************/
#include <stdio.h>
void Funz1(void);
void Funz2(void);
int i,j;
void main()
{
int i;
i=0;j=0;
Funz1();
Funz2();
printf("Nella main() i=%d \t j=%d \n",i,j);
} /* END MAIN PROGRAM */
void Funz1(void)
{
int j;
i=5; j=4;
i++; j++;
printf("Nella Funz1() i=%d \t j=%d \n",i,j);
} /* End Funz1 */
void Funz2(void)
{
i++; j++;
printf("Nella Funz2() i=%d \t j=%d \n",i,j);
} /* End Funz2 */
Output di locglob.c:
/****************************************************************/
/* Nome programma: parind.C ( PARametri per INDirizzo ) */
/* Questo programma chiede in input n numeri interi e ne trova: */
/* 1) il massimo; */
/* 2) la posizione del massimo (se ci fossero piu' massimi, */
/* troverebbe la posizione del primo) */
/****************************************************************/
#include <stdio.h>
#include <stdlib.h>
void New_page(void);
void Leggi(int *num, int num_elem);
void Trova_Max_Pos(int *vet, int dim_vet, int *max, int *pos_max);
/* e q u i v a l e n t e m e n t e */
/* void Trova_Max_Pos(int vet[],int dim_vet,int *max,int *pos_max);
*/
void main()
{
int num[DIMENSIONE];
int n_componenti;
int max, pos_max;
do
{
New_page();
printf("Numero di elementi da introdurre [1,%d]\n", DIMENSIONE);
scanf("%d",&n_componenti);
}
while ((n_componenti <= 0) || (n_componenti > DIMENSIONE));
Leggi(num, n_componenti);
Trova_Max_Pos(num, n_componenti, &max, &pos_max);
/* STAMPA DELL'ELABORAZIONE */
printf("Il massimo e' %d sulla componente %d\n",max, pos_max);
} /* End main() */
/* "PULISCE" LO SCHERMO */
void New_page(void)
{
system("cls"); /* Consente di eseguire comandi DOS */
} /* Bisogna includere stdlib.h */
*max = vet[0];
*pos_max = 0;
for (i=1; i<dim_vet; i++)
if (*max < vet[i])
{
*max = vet[i];
*pos_max = i;
}
}
Output di parind.c:
Elemento[0]=56
inizio input
Elemento[1]=25
Elemento[2]=-3
Elemento[3]=8
Elemento[4]=44
Elemento[5]=56
Elemento[6]=45
Elemento[7]=56
fine input
/****************************************************************/
/* Nome programma : static.c */
/* Funzione che usa il modificatore di accesso "static" */
/****************************************************************/
#include <stdio.h>
int Conta(void);
void main()
{
while ( Conta() < 10 );
}
int Conta(void)
{
static int chiamata = 0; /* La classe static specifica che le
celle di memoria della variabile
vengono liberate alla fine della
esecuzione del programmma */
chiamata++;
chiamata++;
printf("Chiamata numero %3d alla funzione Conta\n", chiamata);
return chiamata;
}
Output di static.c:
/****************************************************************/
/* Nome programma : main.c */
/* Il main è una vera e propria funzione con alcuni parametri. */
/* I primi due parametri sono legati alla linea di comando e */
/* vengono attivati dall'esecuzione del comando stesso (nome del*/
/* programma). */
/****************************************************************/
#include <stdio.h>
Output 1 di main.c:
Output 2 di main.c:
Salve Valerio!!!
/*************************************************/
/* Nome programma : readwrit.c ( READ WRITe ) */
/* Questo programma leggere e scrivere su file */
/*************************************************/
#include <stdio.h>
#define NUM_INTERI 10
void Leggi_dati(void);
void Scrivi_dati(void);
int dati[NUM_INTERI];
void main(void)
{
system("cls");
Leggi_dati();
Scrivi_dati();
}/* End main() */
void Leggi_dati(void)
{
FILE *in; /* puntatore a FILE */
int i;
char nome_file_in[20];
in = fopen(nome_file_in,"r");
/* il primo argomento e' una stringa contenente il nome del file
il secondo argomento e' anch'esso una stringa che indica
come si intende utilizzare il file:
"r" (read) --> in lettura
"w" (write) --> in scrittura
"a" (append) --> in aggiornamento
fopen restituisce un puntatore a file
(restituisce NULL nel caso di errore) */
if(in==NULL)
{
printf("Il file %s non esiste\n\n",nome_file_in);
exit(0);
}
for(i=0;i<NUM_INTERI;i++)
fscanf(in,"%d",&dati[i]);
for(i=0;i<NUM_INTERI;i++)
printf("Num[%d] = %d\n",i,dati[i]);
}/* End Leggi_dati() */
void Scrivi_dati(void)
{
FILE *ou; /* puntatore a FILE */
int i;
char nome_file_ou[20];
ou = fopen(nome_file_ou,"w");
if(ou==NULL)
{
printf("Il file %s non puo' essere aperto\n",nome_file_ou);
exit(0);
}
for(i=0;i<NUM_INTERI;i++)
{
dati[i] *= -1;
fprintf(ou,"%d\n",dati[i]);
}
fclose(ou);
}/* End Leggi_dati() */
/***********************************/
/* Nome programma : calloc.c */
/* Allocazione dinamica con calloc */
/***********************************/
#include <stdio.h>
#include <stdlib.h> /* Per l'uso della calloc */
void main(void)
{
int *pi;
int num_elem;
int i;
Output di calloc.c:
input dell’utente
pi[0]=0
pi[1]=1
pi[2]=2
pi[3]=3
pi[4]=4
/**********************************************/
/* Nome programma : struct1.c */
/* Una struttura e' una collezione contenente */
/* una o piu' variabili, di uno o piu' tipi, */
/* raggruppate da un nome comune per motivi */
/* di maneggevolezza */
/**********************************************/
#include <stdio.h>
struct point
{
int x;
int y;
};
/* La parola chiave "struct" introduce una dichiarazione di struttura */
/* "point" e' chiamato identificatore o tag della struttura ed e' */
/* opzionale. */
/* "x" e "y" vengono chiamati membri della struttura */
/* Descrive soltanto la struttura e non riserva area di memoria */
void main(void)
{
struct point p; /* p e' una variabile di tipo struct point */
p.x = 5;
p.y = 10;
printf("(%d,%d)\n",p.x,p.y);
} /* End main() */
Output di struct1.c:
(5,10)
/****************************************/
/* Nome programma : struct2.c */
/* Le strutture possono essere copiate */
/* mediante un'unica istruzione */
/****************************************/
#include <stdio.h>
struct point
{
int x;
int y;
};
void main(void)
{
struct point p1,p2;
p1.x = 5;
p1.y = 10;
p2 = p1;
printf("(%d,%d)\n",p2.x,p2.y);
} /* End main() */
Output di struct2.c:
(5,10)
/**********************************/
/* Nome programma : struct3.c */
/* Puntatori alle strutture. */
/**********************************/
#include <stdio.h>
struct point
{
int x;
int y;
};
void main(void)
{
/* pp e' un puntatore ad una struttura di tipo struct point */
struct point *pp;
struct point origine;
origine.x = 0;
origine.y = 0;
pp = &origine;
printf("O=(%d,%d)\n",(*pp).x,(*pp).y);
/* In alternativa e' possibile usare puntatore -> membro
struttura */
printf("O=(%d,%d)\n",pp->x,pp->y);
} /* End main() */
Output di struct3.c:
O=(0,0)
O=(0,0)