Understanding typedef in C: Simplifying Complex Declarations

Rumman Ansari   Software Engineer   2024-07-05 05:00:40   7551  Share
Subject Syllabus DetailsSubject Details 1 Questions
☰ TContent
☰Fullscreen

The C programming language provides a keyword called typedef, which you can use to give a type a new name. OR WE CAN SAY, Typedef is a keyword that is used to give a new symbolic name for the existing name in a C program. This is same as defining alias for the commands. Following is an example to define a term MAN for one-byte numbers ?

	
	typedef unsigned int MAN;
    

After this type definition, the identifier MAN can be used as an abbreviation for the type unsigned char, for example.

	
	MAN  a1, a2;
    

By convention, uppercase letters are used for these definitions to remind the user that the type name is really a symbolic abbreviation, but you can use lowercase, as follows ?

	
	typedef unsigned int man;
    

Example Program:

 <span class="pln">
 </span><span class="com">#include</span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(){</span><span class="pln"> 
	</span><span class="kwd">typedef</span><span class="pln"> </span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> MAN</span><span class="pun">;</span><span class="pln">
	MAN a1</span><span class="pun">,</span><span class="pln"> a2 </span><span class="pun">;</span><span class="pln">
	a1 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">12</span><span class="pun">;</span><span class="pln">
	a2 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">13</span><span class="pun">;</span><span class="pln">
	
	printf</span><span class="pun">(</span><span class="str">"%u \n"</span><span class="pun">,</span><span class="pln">a1</span><span class="pun">);</span><span class="pln">
	printf</span><span class="pun">(</span><span class="str">"%u \n"</span><span class="pun">,</span><span class="pln">a2</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 </span>
 

Output:

12
13
Press any key to continue . . .
 

typedef : typedef is used to give data type a new name, for example

Another Example Program:

  <span class="pln">
</span><span class="com">// C program to demonstrate typedef</span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
 
</span><span class="com">// After this line BYTE can be used</span><span class="pln">
</span><span class="com">// in place of unsigned char</span><span class="pln">
</span><span class="kwd">typedef</span><span class="pln"> </span><span class="kwd">unsigned</span><span class="pln"> </span><span class="kwd">char</span><span class="pln"> BYTE</span><span class="pun">;</span><span class="pln">
 
</span><span class="kwd">int</span><span class="pln"> main</span><span class="pun">()</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    BYTE b1</span><span class="pun">,</span><span class="pln"> b2</span><span class="pun">;</span><span class="pln">
    b1 </span><span class="pun">=</span><span class="pln"> </span><span class="str">'c'</span><span class="pun">;</span><span class="pln">
    printf</span><span class="pun">(</span><span class="str">"%c "</span><span class="pun">,</span><span class="pln"> b1</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 </span>
 

Output:

c Press any key to continue . . .
 

Typedef can be used to simplify the real commands as per our need. For example, consider below statement.

	
	typedef long long int LLI;
    

In above statement, LLI is the type definition for the real C command long long int. We can use type definition LLI instead of using full command long long int in a C program once it is defined.

Another Example Program:

  <span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;limits.h&gt;</span><span class="pln">

</span><span class="kwd">int</span><span class="pln"> main</span><span class="pun">()</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
   </span><span class="kwd">typedef</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> </span><span class="kwd">long</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LLI </span><span class="pun">;</span><span class="pln">
   LLI  a </span><span class="pun">=</span><span class="pln"> </span><span class="lit">768783793</span><span class="pun">;</span><span class="pln">
   printf</span><span class="pun">(</span><span class="str">"Storage size for long long int data type : %ld \n"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">sizeof</span><span class="pun">(</span><span class="pln">LLI</span><span class="pun">));</span><span class="pln">
   printf</span><span class="pun">(</span><span class="str">" %ld  \n"</span><span class="pun">,</span><span class="pln">a</span><span class="pun">);</span><span class="pln">

   </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 </span>
 

Output:

Storage size for long long int data type : 8
 768783793
Press any key to continue . . .
 

typedef in structure

You can use typedef to give a name to your user-defined data types as well. For example, you can use typedef with a structure to define a new data type and then use that data type to define structure variables directly as follows ?

Consider the below structure.

struct student
{
    int marks[2];
    char name[10];
    float average;
}
    

Variable for the above structure can be declared in two ways.

1st way :


struct student record;       /* for normal variable */
struct student *record;     /* for pointer variable */
    
2nd way :
typedef struct student status;
    
  • When we use typedef keyword before struct like above, after that we can simply use type definition “status” in the C program to declare structure variable.
  • Now, structure variable declaration will be, status record.
  • This is equal to “struct student record”. Type definition for struct student is status. i.e. status = struct student

An alternative way for structure declaration using typedef in C

typedef struct student
{
         int mark [2];
         char name [10];
         float average;
} status;
    

To declare structure variable, we can use the below statements.

status record1;                 /* record 1 is structure variable */
status record2;                 /* record 2 is structure variable */
    

Example Program:

  <span class="pln">
</span><span class="com">// Structure using typedef:</span><span class="pln">

</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;string.h&gt;</span><span class="pln">

</span><span class="kwd">typedef</span><span class="pln"> </span><span class="kwd">struct</span><span class="pln"> student 
</span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">int</span><span class="pln"> id</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">char</span><span class="pln"> name</span><span class="pun">[</span><span class="lit">20</span><span class="pun">];</span><span class="pln">
  </span><span class="kwd">float</span><span class="pln"> percentage</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> status</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">int</span><span class="pln"> main</span><span class="pun">()</span><span class="pln"> 
</span><span class="pun">{</span><span class="pln">
  status record</span><span class="pun">;</span><span class="pln">
  record</span><span class="pun">.</span><span class="pln">id</span><span class="pun">=</span><span class="lit">1</span><span class="pun">;</span><span class="pln">
  strcpy</span><span class="pun">(</span><span class="pln">record</span><span class="pun">.</span><span class="pln">name</span><span class="pun">,</span><span class="pln"> </span><span class="str">"atnyla"</span><span class="pun">);</span><span class="pln">
  record</span><span class="pun">.</span><span class="pln">percentage </span><span class="pun">=</span><span class="pln"> </span><span class="lit">86.5</span><span class="pun">;</span><span class="pln">
  printf</span><span class="pun">(</span><span class="str">" Id is: %d \n"</span><span class="pun">,</span><span class="pln"> record</span><span class="pun">.</span><span class="pln">id</span><span class="pun">);</span><span class="pln">
  printf</span><span class="pun">(</span><span class="str">" Name is: %s \n"</span><span class="pun">,</span><span class="pln"> record</span><span class="pun">.</span><span class="pln">name</span><span class="pun">);</span><span class="pln">
  printf</span><span class="pun">(</span><span class="str">" Percentage is: %f \n"</span><span class="pun">,</span><span class="pln"> record</span><span class="pun">.</span><span class="pln">percentage</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 </span>
 

Output:

 Id is: 1
 Name is: atnyla
 Percentage is: 86.500000
Press any key to continue . . .
 

Another Example Program:

  <span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;stdio.h&gt;</span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str">&lt;string.h&gt;</span><span class="pln">
 
</span><span class="kwd">typedef</span><span class="pln"> </span><span class="kwd">struct</span><span class="pln"> </span><span class="typ">Books</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
   </span><span class="kwd">char</span><span class="pln"> title</span><span class="pun">[</span><span class="lit">50</span><span class="pun">];</span><span class="pln">
   </span><span class="kwd">char</span><span class="pln"> author</span><span class="pun">[</span><span class="lit">50</span><span class="pun">];</span><span class="pln">
   </span><span class="kwd">char</span><span class="pln"> subject</span><span class="pun">[</span><span class="lit">100</span><span class="pun">];</span><span class="pln">
   </span><span class="kwd">int</span><span class="pln"> book_id</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="typ">Book</span><span class="pun">;</span><span class="pln">
 
</span><span class="kwd">int</span><span class="pln"> main</span><span class="pun">(</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

   </span><span class="typ">Book</span><span class="pln"> book</span><span class="pun">;</span><span class="pln">
 
   strcpy</span><span class="pun">(</span><span class="pln"> book</span><span class="pun">.</span><span class="pln">title</span><span class="pun">,</span><span class="pln"> </span><span class="str">"ANSCII C"</span><span class="pun">);</span><span class="pln">
   strcpy</span><span class="pun">(</span><span class="pln"> book</span><span class="pun">.</span><span class="pln">author</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Dennis sir"</span><span class="pun">);</span><span class="pln"> 
   strcpy</span><span class="pun">(</span><span class="pln"> book</span><span class="pun">.</span><span class="pln">subject</span><span class="pun">,</span><span class="pln"> </span><span class="str">"C Programming Tutorial"</span><span class="pun">);</span><span class="pln">
   book</span><span class="pun">.</span><span class="pln">book_id </span><span class="pun">=</span><span class="pln"> </span><span class="lit">6495407</span><span class="pun">;</span><span class="pln">
 
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book title : %s\n"</span><span class="pun">,</span><span class="pln"> book</span><span class="pun">.</span><span class="pln">title</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book author : %s\n"</span><span class="pun">,</span><span class="pln"> book</span><span class="pun">.</span><span class="pln">author</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book subject : %s\n"</span><span class="pun">,</span><span class="pln"> book</span><span class="pun">.</span><span class="pln">subject</span><span class="pun">);</span><span class="pln">
   printf</span><span class="pun">(</span><span class="pln"> </span><span class="str">"Book book_id : %d\n"</span><span class="pun">,</span><span class="pln"> book</span><span class="pun">.</span><span class="pln">book_id</span><span class="pun">);</span><span class="pln">

   </span><span class="kwd">return</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 </span>
 

Output:

Book title : ANSCII C
Book author : Dennis sir
Book subject : C Programming Tutorial
Book book_id : 6495407
Press any key to continue . . .
 

No Program Data.

Stay Ahead of the Curve! Check out these trending topics and sharpen your skills.