C语言的陷阱之typedef-创新互联

typedef是一个关键字,可以重命名一些数据类型也可以重定义一些新的数据类型。我们从以下几个角度去理解typedef。

成都创新互联是一家专业从事成都网站建设、成都网站设计、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,成都创新互联依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

1.typedef和普通数据类型类型

typedef int MYINT;int a = 10;
MYINT B = 20;123123

我们给int重命名成MYINT,这时候 int 和MYINT 是一样的,都可以定义变量,并且在32位平台都是32位的。

2.typedef和结构体(重点)

struct people 
{    int age;    char sex;
};1234512345

上面创建了一个新的数据类型 strcut people,注意,这个是数据类型,数据类型不占内存。

struct people p1,p2;11

这时候我们定义了两个变量,p1和p2,他们的数据类型是struct people,以后我们每次定义变量都要写struct people,是不是感觉很麻烦,使用typedef给它重命名一下就简单多了。

typedef struct people
{    int age;    char sex;
}STRPEO; 1234512345

这样struct people和STRPEO和struct people就有了一样的作用。以后我们在定义变量直接STRPEO p1,p2;是不是简单很多。
我们再来定义一个该结构体的指针

typedef struct people
{
int age;
char sex;
}*PSTRPEO;

虽然* 和PSTRPEO很近,但是* 是和struct people 结合的,也就是说,PSTRPEO 的类型是struct people *

STRPEO P1;          //定义结构体变量P1.age = 20;        //给结构体age成员赋值PSTRPEO P = &p1;    //使用结构体指针访问age成员printf("%d\n",p->age);      //结果是  20  12341234

3.typedef和#define(重点)
typedef是给类型重命名,相当于一个数据类型,而#define是宏定义,在程序预处理时期直接替换

typedef int * PMYINT;

MYINT a,b;      123123

相当于 int* a,int* b,两个变量的数据类型都是int *

#define PMYINT int *PMYINT a,b;123123

* 宏定义是直接替换,在这就是用 int替换掉PMYINT 相当于int a,b;a是int类型,b是int类型。**

4.typedef和const(重点)

回顾:const int * p; //指针p指向的变量是不可变得
int * const p; //指针p本身是不可改变的

typedef int* PINT;const PINT p1;
PINT const p2;12341234

按照我们平常的理解应该是const int* p1;和int *const p2;p1指向的变量是不可变的,p2指针本身是不可变的。经过代码验证我们发现,无论是const PINT p1;还是PINT const p2; 效果都等价于 int *const ,p1和p2本身是不可变的。 那我们想让指针指向的变量不可变怎么办?

typedef const int* CPINT;

CPINT P1,CPINT P2;      //这样p1和p2本身可变,指向的变量不可变。123123

5.typedef和函数指针

函数:int * test(const char *,int );
函数指针 int* ( * ptest)(const char * ,int )

我们每次定义这类函数的指针都要写这么长,很麻烦于是

typedef int * ( * PTEST)(const char * ,int);

以后我们在使用该函数指针时直接PTEST P1,P2;就可以了。

6.使用typedef的意义
使用typedef的好处就是简化类型的书写,创建与平台无关的数据类型,有利于代码移植,int在32位机器上就是32位的,在我们在32位机器上写的程序很可能无法在64位平台运行,我们可以把int用typedef重定义一下,即可增强代码的可移植性。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

文章标题:C语言的陷阱之typedef-创新互联
浏览路径:https://www.cdcxhl.com/article0/ehgio.html

成都网站建设公司_创新互联,为您提供自适应网站全网营销推广微信公众号营销型网站建设域名注册标签优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发