• typedef 优于 #define


    案例一:
    
    通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子:
    
    typedef char *pStr1;
    
    #define pStr2 char *;
    
    pStr1 s1, s2;
    
    pStr2 s3, s4;
    
    在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。
    
    案例二:
    
    下面的代码中编译器会报一个错误,你知道是哪个语句错了吗?
    
    typedef char * pStr;
    
    char string[4] = "abc";
    
    const char *p1 = string;
    
    const pStr p2 = string;
    
    p1++;
    
    p2++;
    
    是p2++出错了。这个问题再一次提醒我们:typedef和#define不同,它不是简单的文本替换。上述代码中const pStr p2并不等于const char * p2。const pStr p2和const long x本质上没有区别,都是对变量进行只读限制,只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已。因此,const pStr p2的含义是:限定数据类型为char *的变量p2为只读,因此p2++错误。
  • 相关阅读:
    vim的一些基本配置
    做菜好吃的小技巧02
    SQLServer创建用户登录
    Python库整理
    centos7开机界面出现多个选项
    Elasticsearch和MongoDB简要对比
    OLTP与OLAP
    CentOS7命令总结
    windows下快速删除命令
    Idea配置热部署
  • 原文地址:https://www.cnblogs.com/yaowen/p/4795481.html
Copyright © 2020-2023  润新知