一句话帮你理解 typedef 的用法

2019-09-19 14:20 次阅读
串简单替换。当然下面这样的例子你可能见过很多次了:

#define PIONTER int*
PIONTER a,b; //等同于int* a,b;
typedef int* POINTER1
POINTER1 c,d;//等同于int *c;int *d;

为结构体取别名

这个也比较常见,不过有的人认为,为结构体取别名并不是一个明智的选择,因为它在使用的时候不能直观看到它是结构体类型了。

struct info
{
    char name[128];
    int length;
};

那么你在声明变量的时候,需要带上struct,即像下面这样使用:

struct info var;

但是如果你用typedef取个别名呢?

typedef struct info
{
    char name[128];
    int length;
}Info;

你就可以像下面这样使用了:

Info var;

声明函数指针类型

前面的都很好理解,那么来看看函数指针:

typedef void*(*Fun)(int,int);

这里将返回类型为void *,入参为int的函数类型命名为Fun,那么在其他地方,就可以像下面这样使用啦:

//来源:公众号【编程珠玑】,博客地址:https://www.yanbinghu.com
#include 
typedef void*(*Fun)(int,int);
void *test(int a,int b)
{
    printf("%d,%d
",a,b);
    //do something
    return NULL;
}
int main(void)
{
    Fun myfun = test;//这里的Fun已经是一种类型名了
    myfun(1,1);
    return 0;
}

是不是发现跟前面的不一样了呢?类型别名的位置飘忽不定,有的在最后,有的在中间。

当然typedef的场景并不限于以上几种,这里仅仅是举例。

一句话理解

我不知道你是不是已经完全理解了前面的场景,无论理解与否,这句话都能很好的帮助你再次理解前面的内容:

typedef中声明的类型在变量名的位置出现

什么意思呢,我们回头来看。我们是怎么声明int类型变量的?

int Typename;

像上面这样,对不对?那么用typedef之后呢?把变量名的位置替换为别名:

typedef int Typename;

好了,你现在已经把为int取别名为Typename。

再来看结构体,声明普通结构体变量:

struct info
{
    char name[128];
    int length;
};
struct info Typename;

用typedef取别名,别名取代变量名的位置:

struct info
{
    char name[128];
    int length;
};
typedef struct info Typename;

好了,你现在已经为struct info取别名为Typename。
当然这可能我们平常通常使用下面这种写法:

typedef struct info
{
    char name[128];
    int length;
}Typename;

再来看函数指针类型,我们平常是如何声明函数的?

void *function(int,int);

那么使用typedef取别名呢?用别名取代函数名的位置即可:

void *(*Fun)(int,int);

不过这里需要注意用括号将这个别名括起来,并在前面加*号。

总结

至此,相信你对typedef的使用有了更清晰的认识了。

收藏 人收藏
分享:

评论

相关推荐

跟着老师一起写完后,老师改的也改了,烧写后成这样子。 自己感觉连MAIN函数都没进去。。。 附件:后面附有自己的代码...
发表于 09-23 05:45 93次 阅读

大家好,我的程序在nandflash上电有一定几率不能执行,main函数的前两行是串口配置和打印一行信息,main函数的最后设置了一个看门...
发表于 09-18 13:11 52次 阅读

单片机在执行main函数之前都做了哪些工作?是不是还有别的工作先做了?main并不是最先执行的程序?...
发表于 09-05 04:35 94次 阅读

请问如果我要移植UCOS到STM32mini板上,能否找到程序源码中的某一个已经移植好UCOS的程序来改main函数,或者说将其作...
发表于 08-19 03:06 84次 阅读

最近在做一个多级菜单项目,看了很多资料,大体分两种设计思路:1、通过双向链表实现;2、通过数组实现。思路无非是把菜单联系起...
发表于 08-18 16:23 246次 阅读

裸机第二个例子,如果main不返回,需要设置栈吗? 汇编程序: .text .global _start _start:       ...
发表于 08-13 05:38 131次 阅读

各位大哥:在汉字显示实验里已经在W25X16里建立了字库,在MAIN函数里原子大哥是用Show_Font()函数里显示汉字的,可是...
发表于 08-11 22:14 68次 阅读

你好, 抱歉再次邮递,但我认为图像zip文件没有上载,所以我会解释通过文本。 我在main函数下面写了简单的代码。 LCDA S...
发表于 08-08 08:27 275次 阅读

下面我们先介绍预备知识 typedef的用法和函数指针的学习。...
发表于 08-06 08:01 49次 阅读

[tr] 我现在在使用6748EVM的开发板,在学习ENET_ECHO例子时遇到个问题。例子中发送数据是在接收中断函数里面实现的,...
发表于 08-05 13:36 38次 阅读

浅析typedef函数指针用法

首先我们根据前面提到的“形式1”认识到它是一个指向某种函数的指针,这种函数参数是一个int型,返回值....
的头像 单片机爱好者 发表于 11-02 10:38 906次 阅读

如何解决STM32调试无法进入main函数的问题?

本文主要详细介绍了怎么解决STM32调试无法进入main函数的问题?
的头像 玩转单片机 发表于 10-05 10:06 2613次 阅读

C语言程序的main函数免费下载

本文档的主要内容详细介绍的是C语言程序的main函数免费下载。
发表于 09-26 14:48 169次 阅读
C语言程序的main函数免费下载

浅谈C语言return语句和main 函数的返回值

在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的....
发表于 05-10 10:53 1742次 阅读
浅谈C语言return语句和main 函数的返回值

Typedef的用途和原声明举例及陷阱分析

typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目....
发表于 04-14 07:34 428次 阅读
Typedef的用途和原声明举例及陷阱分析

typedef和define的介绍及本质区别

对于都可以用来给对象取一个别名的Typedef和define来说,是有区别的。本文通过对typede....
发表于 04-14 07:31 584次 阅读
typedef和define的介绍及本质区别

NB991_MAIN10W

NB991_MAIN10W
发表于 12-11 16:31 211次 阅读
NB991_MAIN10W

单片机编程的基本思路和写法

学习单片机最主要的是学习写程序的方法,程序的功能千变万化,是学不完的,只有掌握了一定方法,才能用这种....
发表于 11-14 09:17 668次 阅读
单片机编程的基本思路和写法

typedef struct的用法

typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于....
发表于 11-09 17:20 489次 阅读
typedef struct的用法

typedef结构体定义

typedef为这个新的结构起了一个名字,叫MyStruct。typedef struct tagM....
发表于 11-09 16:55 991次 阅读
typedef结构体定义

typedef的用法

typedef 有一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫 REAL 的浮点....
发表于 11-09 16:32 651次 阅读
typedef的用法

c语言中typedef的用法

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储....
发表于 11-09 15:23 1753次 阅读
c语言中typedef的用法

typedef和define区别

typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异。它本身是一种存储....
发表于 11-09 14:22 2272次 阅读
typedef和define区别

typedef是什么意思

typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异。它本身是一种存储....
发表于 11-09 14:03 1677次 阅读
typedef是什么意思

Typedef用法小结

非常不错的文档有着基本数据类型结构体enum与函数指针等等的Typedef相关用法.
发表于 06-15 15:46 224次 阅读
Typedef用法小结

main

很不错
发表于 03-20 08:00 165次 阅读
main

typedef_struct_用法详解和用法小结

发表于 11-13 13:16 314次 阅读
typedef_struct_用法详解和用法小结
电子发烧友 华秋开发
APP 网站地图
红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三 红运快三