1	#include <stdio.h>
2	#include <stdlib.h>
3	
4	typedef struct
5	{
6	    int NumberOfCows;
7	    int NumberOfSheep;
8	    int NumberOfPigs;
9	}FarmYardStruct;
10	
11	typedef union
12	{
13	    int NumberOfCows;
14	    int NumberOfSheep;
15	    int NumberOfPigs;
16	}FarmYardUnion;
17	
18	int main(int argc, char *argv[])
19	{
20	  /*Create a structure*/
21	  FarmYardStruct OldMacsFarm;
22	  /*Create a union*/
23	  FarmYardUnion YoungMacsFarm;
24	  
25	  /*Fill the members of OldMacdonaldsFarm structure*/
26	  OldMacsFarm.NumberOfCows = 12;
27	  OldMacsFarm.NumberOfSheep = 54;
28	  OldMacsFarm.NumberOfPigs = 6;
29	  
30	  /*Fill the members of YoungMacdonaldsFarm union*/
31	  YoungMacsFarm.NumberOfCows = 12;
32	  YoungMacsFarm.NumberOfSheep = 54;
33	  YoungMacsFarm.NumberOfPigs = 6;
34	  
35	  /*Lets tell the world all about the Macdonalds*/
36	  printf("Old Macdonald had a farm\n");
37	  printf("On that farm he had %d cows\n",OldMacsFarm.NumberOfCows);
38	  printf("and on that farm he had %d sheep\n",OldMacsFarm.NumberOfSheep);
39	  printf("and on that farm he had %d pigs\n\n",OldMacsFarm.NumberOfPigs);
40	  
41	  printf("Young Macdonald also had a farm\n");
42	  printf("On that farm he had %d cows\n",YoungMacsFarm.NumberOfCows);
43	  printf("and on that farm he had %d sheep\n",YoungMacsFarm.NumberOfSheep);
44	  printf("and on that farm he had %d pigs\n\n",YoungMacsFarm.NumberOfPigs);
45	  
46	  /*Print out the sizes of the structure compared to the union*/
47	  printf("Sizeof Farmyard struct is %d\n",sizeof(FarmYardStruct));
48	  printf("Sizeof Farmyard union is %d\n",sizeof(FarmYardUnion));
49	  
50	  system("PAUSE");	
51	  return 0;
52	}

Purpose of the program

This program

Break down of the code

Line 1 - This line starts with a '#' hash sign which indicates that it is a preprocessor directive. The #include directive instructs the preprocessor to copy the contents of the following file into this source code file at this point. The filename is surrounded with '<>' brackets this instructs the preprocessor to look in the system 'include' directory first for this file. So this line copies the contents of the file 'stdio.h' into the source code file at this point before compiling starts. The file 'stdio.h' contains the declaration of many basic input output functions that are used in C programs.

Line 2 - This line works in the same manner as line 1. The difference is that the preprocessor copies the contents of the file 'stdlib.h' in to the source code at this point before compiling starts. The file 'stdlib.h' contains the declaration of many basic functions used by C programs.

Line 3 - Is blank.

Line 18 - This line contains the start of our definition of the main function. As you can see main returns an int value. This value indicates to the operating system whether or not the program has terminated normally. The main function also takes two parameters these contain any command line options that are sent to you program when it starts. E.g. if you start notepad from the command line you would write notepad if you want to start notepad with a file to edit you would write notepad readme.txt. readme.txt would be a command line option. This is not a subject that will be considered further in the book so you may wish to find out more yourself.

Line 19 - This line contains the opening brace of the main function. There must be a closing brace to match every opening brace and vice versa. The closing brace is on line 13.

Line 50 - The function system("PAUSE") is used to pause the program until a key is pressed. The reason for this is that under windows the console would open, the text would be output to it then it would close. You would see little more than a flash on the screen as this happened. Try commenting out the line to see this happen.

Line 51 - The return statement is used at the end of functions to return an item of data. This item of data should match the return type declared at the start of the function. We are in the main function and as you can see in line 6 this should be an integer. The return statement marks the end of the function any code after this will not be executed your compiler will usually warn you of this when you compile the program. The value 0 is a value that tells the operating system that the program has terminated normally.

Line 52 - This line contains the closing brace of the main function.