LAST UPDATED ON: SEPTEMBER 17, 2024
typedef
in C
typedef
is a keyword used in C language to assign alternative names to existing datatypes. Its mostly used with user defined datatypes, when names of the datatypes become slightly complicated to use in programs. Following is the general syntax for using typedef
,
typedef <existing_name> <alias_name>
Lets take an example and see how typedef
actually works.
typedef unsigned long ulong;
The above statement define a term ulong
for an unsigned long
datatype. Now this ulong
identifier can be used to define unsigned long
type variables.
ulong i, j;
Application of typedef in C
typedef
can be used to give a name to user defined data type as well. Lets see its use with structures.
typedef struct
{
type member1;
type member2;
type member3;
} type_name;
Here type_name represents the stucture definition associated with it. Now this type_name can be used to declare a variable of this stucture type.
type_name t1, t2;
Structure definition using typedef in C
Let's take a simple code example to understand how we can define a structure in C using typedef
keyword.
#include<stdio.h>
#include<string.h>
typedef struct employee
{
char name[50];
int salary;
}emp;
void main( )
{
emp e1;
printf("\nEnter Employee record:\n");
printf("\nEmployee name:\t");
scanf("%s", e1.name);
printf("\nEnter Employee salary: \t");
scanf("%d", &e1.salary);
printf("\nstudent name is %s", e1.name);
printf("\nroll is %d", e1.salary);
}
typedef
and Pointers in C
typedef
can be used to give an alias name to pointers also. Here we have a case in which use of typedef
is beneficial during pointer declaration.
In Pointers *
binds to the right and not on the left.
int* x, y;
By this declaration statement, we are actually declaring x
as a pointer of type int
, whereas y
will be declared as a plain int
variable.
typedef int* IntPtr;
IntPtr x, y, z;
But if we use typedef
like we have used in the example above, we can declare any number of pointers in a single statement.
NOTE: If you do not have any prior knowledge of pointers, do study Pointers first.