C语言中的typedef
typedef关键字用于为类型分配新名称。这只是为了防止我们编写更多内容。
例如,如果我们要声明一些type变量unsigned int,则必须在程序中编写unsigned int,这对于我们中的某些人可能非常忙。因此,我们可以使用typedef为unsigned int分配选择的新名称,该名称可以在我们想在程序中使用unsigned int的任何时间使用。
typedefcurrent_name new_name;
typedef unsigned int uint;
uint i, j;
现在,我们可以在整个程序中编写uint而不是unsigned int。上面的代码与编写相同:
unsigned int i, j;
让我们来看一个例子。#include
int main() {
typedef unsigned int ui;
ui i = 5, j = 8;
printf("i = %d\n", i);
printf("j = %d\n", j);
return 0;
}
因此,我们可以为任何数据类型分配一个新名称。
同样,我们也可以使用typedef为结构分配一个新名称,该结构是用户定义的数据类型,如下所示:
typedefstruct structure_name
{
data-typemember-1;
data-typemember-2;
data-typemember-3;
data-typemember-4;
}type_name;
现在,在声明这种结构类型的变量的同时,我们可以type_name代替struct structure_name整个程序编写代码。
让我们以在“结构”主题中看到的名为“学生”的结构为例。#include
#include
typedef struct student
{
int roll_no;
char name[30];
int phone_number;
}st;
int main()
{
st p1, p2, p3;
p1.roll_no = 1;
strcpy(p1.name,"Brown");
p1.phone_number = 123443;
p2.roll_no = 2;
strcpy(p2.name,"Sam");
p2.phone_number = 1234567822;
p3.roll_no = 3;
strcpy(p3.name,"Addy");
p3.phone_number = 1234567844;
printf("First Student\n");
printf("roll_no : %d\n", p1.roll_no);
printf("name : %s\n", p1.name);
printf("phone_number : %d\n", p1.phone_number);
printf("Second Student\n");
printf("roll_no : %d\n", p2.roll_no);
printf("name : %s\n", p2.name);
printf("phone_number : %d\n", p2.phone_number);
printf("Third Student\n");
printf("roll_no : %d\n", p3.roll_no);
printf("name : %s\n", p3.name);
printf("phone_number : %d\n", p3.phone_number);
return 0;
}
在这里,整个示例与在Structure中所做的相同,唯一的区别是我们用st代替代替,struct student即我们使用了新类型(名为st)来声明该结构类型的变量(命名为student)。
我们也可以结合使用typedef和联合。为此,所有内容都将与关键字关键字union代替struct的结构相同。#include
#include
typedef union student
{
int roll_no;
int phone_number;
char name[30];
}st;
int main()
{
st p1, p2, p3;
p1.roll_no = 1;
p1.phone_number = 123443;
strcpy(p1.name,"Brown");
p2.roll_no = 2;
p2.phone_number = 1234567822;
strcpy(p2.name,"Sam");
p3.roll_no = 3;
p3.phone_number = 1234567844;
strcpy(p3.name,"Addy");
printf("First Student\n");
printf("roll_no : %d\n", p1.roll_no);
printf("phone_number : %d\n", p1.phone_number);
printf("name : %s\n", p1.name);
printf("Second Student\n");
printf("roll_no : %d\n", p2.roll_no);
printf("phone_number : %d\n", p2.phone_number);
printf("name : %s\n", p2.name);
printf("Third Student\n");
printf("roll_no : %d\n", p3.roll_no);
printf("phone_number : %d\n", p3.phone_number);
printf("name : %s\n", p3.name);
return 0;
}