C typedef

In C, typedef is a keyword used to create custom data type aliases, allowing you to define new names for existing data types. This is particularly useful for making code more readable, portable, and maintainable.

typedef existing_data_type new_data_type;

You use typedef to declare a new data type, giving it a more descriptive name.

Creating Custom Data Types

A common use of typedef is to make code more readable by creating custom data types with meaningful names.

typedef int Age; typedef double Price; Age userAge = 30; Price productPrice = 19.99;

In this example, Age and Price are custom data types that make the code more self-explanatory.

Enhancing Code Portability

typedef can also help improve code portability by creating custom data types for platform-specific data types. For instance, you can define data types with specific bit sizes for use in embedded systems:

typedef unsigned char uint8_t; // 8-bit unsigned integer typedef signed short int int16_t; // 16-bit signed integer

Using these custom types makes it easier to adapt your code to different hardware platforms.

Structs and typedef

typedef is often used with structs to simplify the usage of complex data structures.

typedef struct { int x; int y; } Point; Point p1; p1.x = 10; p1.y = 20;

By defining a typedef for the struct, you can declare and use Point objects more conveniently.

Enums and typedef

typedef can also be used with enums to create custom names for enumeration types. This can make code more readable and expressive.

typedef enum { RED, GREEN, BLUE } Color; Color chosenColor = GREEN;

In this example, Color provides a more descriptive alternative to using enum directly.

Function Pointers and typedef

typedef can simplify the declaration of function pointers, making the code more understandable.

typedef int (*MathFunction)(int, int); int add(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } int main() { MathFunction operation = add; int result = operation(10, 5); return 0; }

Here, MathFunction is a custom data type for function pointers that take two integers and return an integer.


typedef in C allows you to create custom, more descriptive data type names, making your code more readable and maintainable. It is commonly used for defining custom data types, simplifying the use of structs, enums, and function pointers, and improving code portability, especially in cases where hardware-specific data types need to be handled.