C语言 typedef的用法示例详解
一、什么是typedef
typedef是在C和C++编程语言中的一个关键字。作用是为现有的数据类型(int、float、char……)创建一个新的名字,目的是为了使代码方便阅读和理解。
二、typedef用法
1、对于数据类型使用例如:
typedef int NEW_INT;
以上就是给int起了一个新的名字NEW_INT,注意要加分号。当要定义int类型数据时就可以:
NEW_INT num;
此时NEW_INT num 等同于 int num。
2、对于指针的使用例如
typedef int *PTRINT;
以上就是给int *起了一个新的名字NEW_INT。可定义int类型指针变量如:
PTRINT x;
此时PTRINT x等同于int *x。
例:


3、对于结构体的使用
在声明结构体时可为结构体和结构体指针起别名,如:
typedef struct NUM
{
int a;
int b;
}DATA,*PTRDATA;此时DATA等同于struct NUM,*PTRDATA等同于struct NUM *。
定义结构体变量及指针可简化为:
DATA data; //定义结构体变量 PTRDATA pdata; //定义结构体指针
举个例子:
#include <stdio.h>
typedef struct NUM
{
int a;
int b;
}DATA,*PTRDATA;
int main()
{
DATA data; //定义结构体变量
PTRDATA pdata; //定义结构体指针
pdata=&data; //结构体指针指向结构体变量
data.a=100;
data.b=500;
printf("a=%d\nb=%d\n",data.a,data.b);
printf("a=%d\nb=%d\n",pdata->a,pdata->b);
return 0;
}运行结果:

三、进阶typedef
1、数组指针
int (*ptr)[3];
使用Typedef:
typedef int (*PTR_TO_ARRAY)[3];
例:
#include <stdio.h>
typedef int (*PTR_TO_ARRAY)[3];
int main()
{
Int I;
Int temp[3]={1,2,3};
PTR_TO_ARRAY ptr_to_array;
ptr_to_array = &temp;
for(i+0;i<3;i++)
{
printf("%d\n",(*ptr_to_array)[i]);
}
return 0;
}2、指针函数
int (*fun)(void);
使用Typedef:
typedef int (*PTR_TO_FUN)(void);
3、Int *(*array[3])(int);
int *(*array[3])(int);
使用Typedef:
typedef int *(*PTR_TO_FUN)(int); PTR_TO_FUN array[3];
4、Void (*funA(int,void(*funB)(int)))(int);
void (*funA(int,void(*funB)(int)))(int); void (*funA(参数))(int);
使用Typedef:
typedef void (*PTR_TO_FUN)(void); PTR_TO_FUN funA(int, PTR_TO_FUN);
四、Typedef与define
Typedef是起别名,define是替换。
例如:
typedef int *PTR; PTR a,b;
此时a,b都是指针变量。
#define PTR int* PTR a,b;
此时等同于
int *a,b;
只有a为指针变量,而b为整型变量。
到此这篇关于C语言 typedef的使用的文章就介绍到这了,更多相关C语言 typedef使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
QT获取显示当前时间和日期的方法(用QTime,QDate和QDateTime)
获取当期日期时间在我们日常开发中经常会遇到,下面这篇文章主要给大家介绍了关于QT获取显示当前时间和日期的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2022-08-08
C++运行时获取类型信息的type_info类与bad_typeid异常
这篇文章主要介绍了C++运行时获取类型信息的type_info类与bad_typeid异常,是C++入门学习中的基础知识,需要的朋友可以参考下2016-01-01
VC中LINK 2001 和 LINK 2009 的错误的解决方法
最近将两个开源C++项目编译成windows版本的时候遇到很多问题,编译的时候总是报错,报的最多的是无法解析的外部符号”,经过近3天的折腾总算都通过了,这里是一些总结2020-10-10
C++迭代器介绍(iterator、const_iterator、reverse_interator、const_rev
这篇文章主要介绍了C++迭代器介绍(iterator、const_iterator、reverse_interator、const_reverse_interator),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-02-02


最新评论