typedef in C

The typedef keyword in C allows you to create new names (aliases) for existing data types. This makes your code more readable, easier to maintain, and less error-prone when dealing with complex or lengthy type declarations.

Why Use typedef?

Syntax

                        
typedef existing_type new_name;
                        
                    

Here, existing_type is the original data type, and new_name is the alias you want to create for it.

Example: Simple Usage of typedef

The following example demonstrates how to use typedef to create a new name for an existing type:

Example 1:

                        
#include <stdio.h>
        
typedef unsigned int uint;
        
int main() 
{
    uint age = 25;  // Using typedef alias
    printf("Age: %u\n", age);
        
    return 0;
}
                        
                    

Output:

Age: 25

typedef with Structures

When working with structures, typedef can simplify the process of defining and using structure variables.

Example 2:

                        
#include <stdio.h>
        
typedef struct {
    char name[50];
    int age;
}   Student;
        
int main()
{
    Student s1 = {"Alice", 20};  // Using typedef alias
    printf("Name: %s\n", s1.name);
    printf("Age: %d\n", s1.age);
        
    return 0;
}
                        
                    

Output:

Name: Alice
Age: 20

typedef for Pointers

You can use typedef to create an alias for pointers, which is especially helpful when dealing with function pointers or complex pointer declarations.

Example 3:

                        
#include <stdio.h>
        
typedef int* IntPtr;
        
int main()
{
    int x = 10;
    IntPtr p = &x;  // Using typedef alias for a pointer
    printf("Value of x: %d\n", *p);
        
    return 0;
}
                        
                    

Output:

Value of x: 10

typedef with Function Pointers

Using typedef for function pointers simplifies their syntax and makes the code easier to read.

Example 4:

                        
#include <stdio.h>
        
typedef void (*FunctionPointer)(int);
        
void display(int num) {
    printf("Number: %d\n", num);
}
        
int main() {
    FunctionPointer fp = display;  // Using typedef alias for function pointer
    fp(42);
        
    return 0;
}
                        
                    

Output:

Number: 42

Key Points