Get free ebooK with 50 must do coding Question for Product Based Companies solved
Fill the details & get ebook over email
Thank You!
We have sent the Ebook on 50 Must Do Coding Questions for Product Based Companies Solved over your email. All the best!

typedef in C

Last Updated on January 16, 2024 by Ankit Kochar

In the realm of programming languages, C stands as a stalwart, providing a robust foundation for software development. One of the language’s distinctive features is the "typedef" keyword, a powerful tool that allows programmers to enhance code readability, maintainability, and portability. Understanding typedef in C is pivotal for developers seeking to write concise and comprehensible code. In this article, we delve into the intricacies of typedef, exploring its syntax, applications, and best practices.

What is typedef in C Language?

In C, typedef is a keyword that allows users to create aliases for existing data types. This means that instead of having to use the original data type name, users can use a new name that they have created using the typedef keyword. This can make code easier to read and understand, and can also help to make code more portable across different platforms.

Syntax for typedef in C

typedef  ;

Here, "original_type" is the name of the data type that you want to create an alias for, and "new_type_name" is the name that you want to give to the new alias.

Example of typedef in C

Let’s say that we want to create a new name for the data type "unsigned int". We can do this using the following code:

typedef unsigned int uint;

Now, instead of writing "unsigned int" every time we can declare a variable of this type using "uint".

For example,

unsigned int myVariable = 42; can be written as uint myVariable = 42; 

In the above example, we have seen the primary use of typedef. There are lots of uses of typedef. Let’s see all of them one by one.

Uses of typedef in C

  • Use of typedef Keyword with Simple Data Type
    In this, we’ll use typedef keyword with simple data type.

    #include <stdio.h>
    typedef unsigned int var;
    int main()  
        var x, y, z;
        x = 10;
        y = 20;
        z = x + y;
        printf("The sum of %u and %u is %u", x, y, z);
        return 0;


    The sum of 10 and 20 is 30

    Explanation: We are using the typedef keyword in the above code to replace the unsigned int with the ‘var.’ We can now use var instead of unsigned int anywhere in the code when required.

  • Uses of typedef Keyword with Structures
    One advantage of using typedef is to create custom data types. For example, we want to create a new data type called "myStruct" based on the "struct" data type. We can do this using the following code:

    #include <stdio.h>
    #include <string.h>
    typedef struct students 
      char name[50];
      char branch[50];
      int ID_no;
    } students;
    int main()
      students st;
             "Computer Science And Engineering");
      st.ID_no = 108;
      printf("Name: %s\n",;
      printf("Branch: %s\n", st.branch);
      printf("ID_no: %d\n", st.ID_no);
      return 0;


    Name: Kamlesh
    Branch: Computer Science And Engineering
    ID_no: 108
  • Use of typedef Keyword with Pointers

    #include <stdio.h>
    int main() {
        typedef int* ptr;
        ptr a;  // we can use ptr in place of int*
        int x;
        x = 50;
        a = &x;
        printf("The value of x is: %d\n", x);
        printf("The value of x by pointer is: %d", *a);
        return 0;


    The value of x is: 50
    The value of x by pointer is: 50

    Explanation: We are using the typedef keyword in the above code to replace the *‘int with the ‘ptr.’* We can now use ptr instead of ‘int‘ everywhere in the code when required. The name ptr itself suggests that it is a pointer variable. This increases the overall readability of the code.

Applications of typedef

  • The typedef keyword allows us to give a meaningful name to the existing data type which helps other users to understand the program more quickly.
  • The best thing about typedef when it is used with structure is that we don’t have to type struct again and again.
  • We can use typedef with arrays to declare any number of variables.

typedef vs # define

Sometimes it seems very confusing that typedef and #define are the same but they work differently and have their own use cases.

typedef #define
The interpretation of the typedef keyword is performed by the compiler. The interpretation of the #define statement is performed by the preprocessor.
The definition of typedef terminates with a semicolon. #define should not be terminated with a semicolon.
Using typedef we can only assign symbolic names to the types. #define can be used to define an alias for values as well, For e.g., you can define 1 as ONE, 3.14 as PI, etc.
The typedef keyword follows the scope rule, which states that if a new type is defined within a scope (within a function), the new type name will only be visible while the scope is present. In the case of #define, all the occurrences are replaced by the value when the preprocessor sees it.

Point-wise conclusion on typedef and #define

  • We can also define aliases for value as well by using #define. For example, you can define 3.14 as PI, etc whereas Typedef is limited to giving symbolic names to types only.
  • #define statements are interpreted by preprocessors, while typedef statements are interpreted by compilers.
  • There is no semicolon at the end of #define, but in the typedef, there is a semicolon at the end of it.

Program to show the use of #define

#include <stdio.h>
// macro definition
#define LIMIT 3
int main()
  for (int i = 0; i < LIMIT; i++) 
    printf("%d \n", i);
  return 0;



How Does typedef Work in C++?

  • In C++, typedef is a reserved keyword that allows programmers to create an alias for an existing data type. This can help simplify code by providing a higher level of abstraction from the underlying data types, allowing programmers to focus on coding concepts. Additionally, it can make it easier to write and clean up code using default methods such as destroy(), since garbage collectors are the primary region for deleting unnecessary code and freeing up memory space.
  • When using typedef, it is important to consider the sizes of the data types being modified, as this will affect the memory allocation required for variables. For example, large storage data type variables will require more memory space than small storage variables. However, by using typedef, programmers can more easily manage these complexities and write cleaner, more maintainable code.
  • The typedef keyword in C++ can be used to simplify the declaration of variables with compound types such as struct or union. Using structure pointers with typedef can also make it easier to declare multiple variables of the same type with single-level statements, regardless of whether the pointers are included in the structure type or not. This can help shorten and simplify programs, especially those that involve functional pointers.
  • By using typedef, it is possible to rewrite lengthy coding lines that specify functional pointers into more concise and readable code. This can make the functional declarations easier to understand, as they explicitly state the types of variables they will return and the types of inputs they will accept.
  • There are two standard typedef declarations in C++, which are typedef type-declaration and typedef type-name alias-name. These declarations can be used to create new names for existing types, making it easier to read and maintain code.

In conclusion, typedef in C proves to be a valuable asset for programmers aiming to streamline code and improve its clarity. By providing a mechanism to create custom data types, typedef empowers developers to enhance the readability and maintainability of their code. Through the examples and insights shared in this article, it is evident that a nuanced understanding of typedef contributes significantly to efficient and effective C programming. As you embark on your coding journey, incorporating typedef into your toolkit will undoubtedly elevate your code to new levels of sophistication and simplicity.

FAQs related to typedef in C

Here are some FAQs related to typedef in C.

1. Are typedef names locally or globally scoped?
Typedef names have global scope. Once defined, the alias can be used throughout the entire codebase, providing consistency and clarity across multiple functions and files.

2. How is typedef syntax structured?
The syntax for typedef is: typedef existing_data_type new_data_type;. For example, typedef int INTEGER; creates an alias "INTEGER" for the data type "int."

3. What are the benefits of using typedef?
Typedef improves code readability by providing meaningful names to data types, enhances code portability, and simplifies maintenance by allowing easy changes to data types throughout the codebase.

4. Can typedef be used with composite data types?
Yes, typedef can be applied to composite data types such as structs, unions, and enums, enabling the creation of more intuitive and expressive type names.

5. How does typedef contribute to code maintainability?
By creating meaningful aliases, typedef makes it easier to understand the purpose of variables and functions, simplifying code maintenance and updates.

6. Is typedef essential for writing efficient C code?
While not strictly essential, typedef is a powerful tool that significantly improves code organization and readability, contributing to more maintainable and error-resistant programs.

7. Can typedef be used with pointers?
Yes, typedef is commonly used with pointers to simplify the declaration of complex pointer types, making the code more concise and understandable.

8. Are typedef names restricted to uppercase letters?
No, typedef names are not restricted to uppercase letters. Programmers can use any combination of uppercase and lowercase letters to create meaningful aliases.

9. Can typedef be used to create aliases for user-defined structures?
Absolutely. Typedef is often used to create succinct and descriptive names for user-defined structures, making the code more intuitive and self-explanatory.

Leave a Reply

Your email address will not be published. Required fields are marked *