C语言——用typedef定义数据类型

关键字 typedef 用于为系统固有的或程序员自定义的数据类型定义一个别名。数据类型的别名通常使用大写字母,目的是为了与已有的数据类型相区分。
注意:typedef只是为一种已存在的类型定义一个新的名字而已,并未定义一种新的数据类型。

//自定义指针类型
typedef char * pChar; //自定义指针类型  (定义新类型名 pChar: 指代 char * )           
pChar a,b; //等价于  char *a; char *b; 
           //注意和宏 #define char * pChar;  简单替换不一样  
           //宏替换后是 char* a,b;  编译会报错。
           
//自定义枚举类型
typedef enum{false=0,true} bool; //自定义枚举类型 (bool:指代 enum{false=0,true} ) 
bool a=true;    

//下面这几个相对特殊  
//自定义数组类型
typedef int Array[10];  //自定义数组类型  (Array: 指代 int [10] ) 
Array train={9,5,2,7};  //等价于 int train[10] = {9,5,2,7};

//自定义函数类型
typedef char (*pFun)(int data); //自定义函数类型
                      // (pFun: 指代 char (*)(int data) 函数类型)
pFun fun;            //等价于 char (*fun)(int data); 
                     // (可理解为 char (*)(int data)  fun;)
 
//自定义结构体类型            
typedef struct { //自定义结构体类型 (stu: 指代  struct { char ismale....})
	char ismale;
	int age;
}stu;  
stu s;   // 等价于 struct stu s;

例1:自定义数组类型

#include <stdio.h>
typedef int Array[10];  //自定义数组类型  (Array: 指代 int [10] ) 
int main()
{
   Array train={9,5,2,7};  //等价于 int train[10] = {9,5,2,7};
   printf("%d\n",train[1]);
  return 0;
}	

例2:自定义函数类型

#include <stdio.h>
typedef char (*pFun)(int data);  //定义 新类型 pFun:它指代的是 函数类型 char (*)(int data)
char get(int data)
{
   printf("get data=%d\n",data);
	return 1; 
}
int main()
{
   pFun fun; //定义变量fun,变量的类型是函数类型(pFun)
          //等价于 char (*fun)(int data); (可理解为 char (*)(int data)  fun;形式)
   fun = get; //变量赋值(必须是和 pFun匹配的函数的函数名)
   fun(3); 
  return 0;
}

例3:自定义结构体类型

#include <stdio.h>
//自定义结构体类型 (stu: 指代  struct { char ismale....})
typedef struct { 
	char ismale;
	int age;
}stu; 
int main()
{
   stu s={1,20}; //等价于 struct stu s={1,20};
   printf("%d",s.age);
  return 0;
}
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中,可以使用typedef关键字来定义自己习惯的数据类型名称。这样可以简化代码并增加可读性。例如,可以使用typedef定义一个自定义数据类型名称,比如BOOL类型,可以将其定义为int类型,并使用#define定义True为1。这样,在代码中就可以直接使用BOOL作为数据类型,并赋值为True或False。另外,结构体也可以使用typedef定义,这样在声明结构体变量时就不需要再加上struct关键字了。例如,可以使用typedef定义一个结构体类型为lept_value,然后在声明结构体变量时就可以直接使用lept_value而不需要加上struct关键字。结构体变量在赋值的同时也可以对结构体中的变量进行赋值。例如,在定义一个结构体Dog时,可以在声明结构体变量dog1时同时对其进行赋值,如dog1={4,'m'}。这样可以方便地初始化结构体变量的值。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [C语言中结构体用到的typedef](https://blog.csdn.net/weixin_44477424/article/details/122796704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C语言——结构体与typedef](https://blog.csdn.net/fmj2801876977/article/details/129068033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值