zoukankan      html  css  js  c++  java
  • 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++错误。
  • 相关阅读:
    瀑布流
    进度条
    图片延迟加载、scroll
    scroll 滚动广告
    json
    样式更改
    js 不同浏览器的宽度获取
    孤立点挖掘算法
    数据结构算法代码
    深入浅出JMS(一)--JMS基本概念
  • 原文地址:https://www.cnblogs.com/yaowen/p/4795481.html
Copyright © 2011-2022 走看看