zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    zabbix监控部署(三)
    zabbix监控部署(二)
    zabbix监控部署(一)
    Docker安装mysql5.7
    Docker修改容器默认存储路径
    MySQL全量+增量备份脚本
    企业级Dokcer镜像仓库Harbor部署
    Linux环境pyhon3安装pyinstaller
    配置Hive元数据数据库为PostgreSQL
    Oracle 11gR2 RAC 添加节点
  • 原文地址:https://www.cnblogs.com/bettercoder/p/3714103.html
Copyright © 2011-2022 走看看