Thursday, November 24, 2011

Learn C programming tutorial lesson 9 - Structures


We already know that arrays are many variables of the same type grouped together under the same name. Structures are like arrays except that they allow many variables of different types grouped together under the same name. For example you can create a structure called person which is made up of a string for the name and an integer for the age. Here is how you would create that person structure in C:
struct person
{
   char *name;
   int age;
};


The above is just a declaration of a type. You must still create a variable of that type to be able to use it. Here is how you create a variable called p of the type person:
#include

struct person
{
   char *name;
   int age;
};

int main()
{
   struct person p;
   return 0;
}

To access the string or integer of the structure you must use a dot between the structure name and the variable name.
#include

struct person
{
   char *name;
   int age;
};

int main()
{
   struct person p;
   p.name = "John Smith";
   p.age = 25;
   printf("%s",p.name);
   printf("%d",p.age);
   return 0;
}

Type definitions

You can give your own name to a variable using a type definition. Here is an example of how to create a type definition called intptr for a pointer to an integer.
#include

typedef int *intptr;

int main()
{
   intptr ip;
   return 0;
}

Type definitions for a structure

If you don't like to use the word struct when declaring a structure variable then you can create a type definition for the structure. The name of the type definition of a structure is usually all in uppercase letters.
#include

typedef struct person
{
   char *name;
   int age;
} PERSON;

int main()
{
   PERSON p;
   p.name = "John Smith";
   p.age = 25;
   printf("%s",p.name);
   printf("%d",p.age);
   return 0;
}

Pointers to structures

When you use a pointer to a structure you must use -> instead of a dot.
#include

typedef struct person
{
   char *name;
   int age;
} PERSON;

int main()
{
   PERSON p;
   PERSON *pptr;
   PERSON pptr = &p;
   pptr->name = "John Smith";
   pptr->age = 25;
   printf("%s",pptr->name);
   printf("%d",pptr->age);
   return 0;
}

Unions

Unions are like structures except they use less memory. If you create a structure with a double that is 8 bytes and an integer that is 4 bytes then the total size will still only be 8 bytes. This is because they are on top of each other. If you change the value of the double then the value of the integer will change and if you change the value of the integer then the value of the double will change. Here is an example of how to declare and use a union:
#include

typedef union num
{
   double d;
   int i;
} NUM;

int main()
{
   NUM n;
   n.d = 3.14;
   n.i = 5;
   return 0;
}

0 comments:

Post a Comment

Setec Institute || Group : SH6 | | Name : Kim Chanthy. Powered by Blogger.

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Hot Sonakshi Sinha, Car Price in India