Saltycrane logo

SaltyCrane Blog

Notes on Python, Django, and web development on Ubuntu Linux

    

Notes on typedef and struct

Here are my notes on using C's struct and typedef keywords.

struct

To create a C structure, first create a new structure type:
struct my_struct_tag
{
    int member1;
    float member2;
};
Note that in the example above, the struct keyword is used only to create a new data type but it has not defined any variables yet.

To define new varaibles of this structure type, do this:
struct my_struct_tag mystruct1;
struct my_struct_tag mystruct2;

You can optionally combine these two steps and create the new data type and define variables:
struct my_struct_tag
{
    int member1;
    float member2;
} mystruct1, mystruct2;
In this case the structure tag my_struct_tag is optional.

typedef

From the K&R; book, the typedef keyword is used to create new data type names. For example:
typedef int Length;

The name Length is a synonym for int and can be used as follows:
Length len, maxlen;

The typedef keyword can also be used to rename struct data types. Using the example above:
typedef struct my_struct_tag MyStructType;
MyStructType mystruct1;
MyStructType mystruct2;
This creates a new data type name, MyStructType which is synonymous with the struct my_struct_tag data type, and then defines two variables, mystruct1 and mystruct2.

You could combine the creation of the type name with the creation of the struct data type:
typedef struct my_struct_tag
{
    int member1;
    float member2;
} MyStructType;
Like the previous example, this creates a new structure data type and creates a new type name, MyStructType which is synonymous with struct my_struct_tag. Like the combo example in the struct section above, the structure tag, my_struct_tag is optional. However, unlike that example, the identifier following the last curly brace (MyStructType) is the new type name and not a new variable. To define the variables, use:
MyStructType mystruct1;
MyStructType mystruct2;
See also How to share non-global C data structures
Technorati tags:

Post a comment

Required
Required, but not displayed
Optional

Format using Markdown. (No HTML.)
  • Code blocks: prefix each line by at least 4 spaces or 1 tab (and a blank line before and after)
  • Code span: surround with backticks
  • Blockquotes: prefix lines to be quoted with >
  • Links: <URL>
  • Links w/ description: [description](URL)
Created with Django | Hosted by Slicehost