C++ typedef常见用法有哪些


本篇内容主要讲解“C++typedef常见用法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++typedef常见用法有哪些”吧!给已定义的变量类型起个别名定义函数指针类型定义数组指针类型为复杂的声明定义一个新的简单的别名总结一句话:“加不加typedef,类型是一样的”,这句话可以这样理解:没加typedef之前如果是个数组,那么加typedef之后就是数组类型;没加typedef之前如果是个函数指针,那么加typedef之后就是函数指针类型;没加typedef之前如果是个指针数组,那么加typedef之后就是指针数组类型。1、给已定义的变量类型起个别名(1)typedef unsigned char uin8_t; //uint8_t就是unsigned char的别名,这是最基础的用法;(2)结构体用法——作用是给struct __person起了个别名person_t,这种这种用法也很基础;2、定义函数指针类型首先来看一下如何定义函数指针变量,然后再看如何定义函数指针类型。(1)定义函数指针变量定义了一个函数指针变量pFunc,它可以指向这样的函数:返回值为int,形参为char*、int:定义了5个函数指针变量:pFunc[0]、pFunc[1],免费云主机域名它们都可以指向这样的函数:返回值为int*,形参为int:(2)定义函数指针类型定义函数指针类型,必须使用typedef,方法就是,在“定义函数指针变量”前加上typedef。举例:3、定义数组指针类型这个问题还是分两步,先看如何定义数组指针变量,再看如何定义数组指针类型。(1)定义数组指针变量int(*pArr)[5];//定义了一个数组指针变量pArr,pArr可以指向一个int [5]的一维数组char(*pArr)[4][5];///定义了一个数组指针变量pArr,pArr可以指向一个char[4][5]的二维数组char(*pArr)[4][5];///定义了一个数组指针变量pArr,pArr可以指向一个char[4][5]的二维数组上面这个例子中,使用类型转换时,代码的样式略显复杂,试想,我们如果强转为一个结构体数组的指针,那这个强转的括号里的内容得多长!这就直接影响了代码的可读性,因此,强转后的类型应该定义出来。(2)定义数组指针类型如同上面定义函数指针类型的方法,直接在前面加typedef即可,例如:(3)定义数组类型如果我们想声明一个含5个int元素的一维数组,一般会这么写:int a[5];如果我们想声明多个含5个int元素的一维数组,一般会这么写:int a1[5], a2[5], a3[5],或者 a[N][5]可见,对于定义多个一维数组,写起来略显复杂,这时,我们就应该把数组定义为一个类型,例如:4、为复杂的声明定义一个新的简单的别名为复杂的声明定义一个新的简单的别名。方法是:在原来的声明里逐步用别名替换一部分复杂声明,如此循环,把带变量名的部分留到最后替换,得到的就是原声明的最简化版。举例:陷阱一:记住,typedef是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。陷阱二:typedef在语法上是一个存储类的关键字(如auto、extern、mutable、static、register等一样),虽然它并不真正影响对象的存储特性。案例一:通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子:在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。案例二:下面的代码中编译器会报一个错误,你知道是哪个语句错了吗?是p2++出错了。这个问题再一次提醒我们:typedef和#define不同,它不是简单的文本替换。上述代码中const pStr p2并不等于const char * p2。const pStr p2和const long x本质上没有区别,都是对变量进行只读限制,只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已。因此,const pStr p2的含义是:限定数据类型为pStr 的变量p2为只读,因此p2++错误。对于指针数组和数组指针的概念,相信很多人经常会感到迷惑,见到二者一时不能分辨究竟对应哪一个才是对的。接下来我们来分析一下二者区别。我们来看一下这个示例代码:对于上述代码语句,你是否能分清哪一句代码声明的是指针数组,而哪一句代码声明的又是数组指针呢?答案是第一行代码声明的ptr1是一个指针数组,数组名为 ptr1,而“int*”修饰的是数组的内容,该数组包含 5 个 指向 int 类型 数据的指针。第二行代码声明的ptr2则是一个 数组的指针 ,指针变量名为 ptr2,而 int 修饰的是数组的内容,即数组的每个元素。即ptr2 是一个指针,它指向一个包含 5 个 int 类型数据的数组。到此,相信大家对“C++typedef常见用法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: SpringMVC的拦截器链怎么实现及配置

这篇“SpringMVC的拦截器链怎么实现及配置”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringMVC的拦截器链怎么实现及配置”文章吧…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/20 11:25
Next 05/20 11:25

相关推荐