当前位置: 首页 > news >正文

typedef 与指针、多维数组

1.在typedef中使用指针往往会带来意外的结果。如下:

typedef string *pstring;
const pstring cstr;

绝大数人刚开始都会认为cstr是一种指针,它指向const对象,即const pstring cstr 等价于const string *cstr,其实,这是不对的,错误的原因在于单纯地将typedef当做文本扩展了。

首先,我们要认识到pstring它是一个类型,表示的是指向string的指针。声明const pstring时,const修饰的是pstring这个类型本身(修饰的是指针),两者结合起来,即表示指向string的const指针这种类型。最后用const pstring类型来修饰标识符cstr,表明cstr是一个指向string的const指针。原定义可写为:string *const cstr。

其实,我们不需要每次都分析的这么痛苦,因为,在C++中const限定符既可以放在类型前,也可以放在类型后:

string const s1;    // s1 and s2 have same type,
const string s2;    // they're both strings that are const 

所以,下次遇到这样不确定的类型判断时,就const放在诸如pstring类型的后面即可,转换为pstring const cst;

 

2.用typedef简化指向多维数组的指针

typedef类型定义可使指向多维数组元素的指针更容易读、写和理解。以下程序用typedef为数组ia的元素类型定义新的类型名:

int ia[3][4];
typedef int int_array[4];
int_arry *ip = ia;

 

 

转载于:https://www.cnblogs.com/bettercoder/p/3714103.html

相关文章:

  • 32、mysql数据库增删改查
  • Android -- 保存文件
  • ORACLE EXECUTE IMMEDIATE 用法详解
  • SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法
  • 【Advanced Windows Phone Programming】在windows phone 8中解码mp3 和编码pcm
  • JavaScript创建对象(五)——动态原型模式
  • Asp.Net Mvc + ComBoost.Mvc快速开发
  • Laravel Mix运行时关于es2015报错解决方案
  • 建站初级指南
  • 一个ViewGroup#dispatchDraw()中的NP分析
  • LINUX命令 cp: omitting directory 出现的问题解决办法
  • 枚举类的简单应用
  • 手把手教你启用Win10的Linux子系统(超详细)
  • [转载]C# Double toString保留小数点方法
  • 自动化部署打破混乱之墙 助力开发、运维、测试协同作战
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 2017 前端面试准备 - 收藏集 - 掘金
  • CSS相对定位
  • Intervention/image 图片处理扩展包的安装和使用
  • JAVA SE 6 GC调优笔记
  • orm2 中文文档 3.1 模型属性
  • rc-form之最单纯情况
  • 测试如何在敏捷团队中工作?
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 小程序01:wepy框架整合iview webapp UI
  • 应用生命周期终极 DevOps 工具包
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 怎么把视频里的音乐提取出来
  • 栈实现走出迷宫(C++)
  • 中文输入法与React文本输入框的问题与解决方案
  • ​【已解决】npm install​卡主不动的情况
  • ​io --- 处理流的核心工具​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #git 撤消对文件的更改
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (¥1011)-(一千零一拾一元整)输出
  • (C#)一个最简单的链表类
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)Linux Shell编程——输入输出重定向
  • (转)关于多人操作数据的处理策略
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (轉貼) UML中文FAQ (OO) (UML)
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET MVC第三章、三种传值方式
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET处理HTTP请求
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .skip() 和 .only() 的使用
  • @JsonFormat与@DateTimeFormat注解的使用
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @RequestMapping 的作用是什么?
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题