zoukankan      html  css  js  c++  java
  • C语言基础:C语言typedef(2)

    上一节我们简单的介绍了一下typedef的基本认识, 这次我们来讲解一下它与宏定义的一些对比~~


    有研究的朋友肯定会发现, 使用宏定义一样可以达到类似typedef的效果, 比如:

    #include <stdio.h>
    
    #define String char *
    
    int main()
    {
        String s;
        
        s = "hehe";
        
        return 0;
    }

    #include <stdio.h>
    
    typedef char * String;
    
    int main()
    {
        String s;
        
        s = "hehe";
        
        return 0;
    }



    没错, 从表面上来看, 它们的效果的确是一样的, 但在特定情况下就会有问题, 比如:

    #include <stdio.h>
    
    #define String2 char *
    
    typedef char * String;
    
    int main()
    {
        String s1, s2;
        
        s1 = "hehe";
        s2 = "hehe";
        
        String2 s3, s4;
        
        s3 = "haha";
        s4 = "haha";
        
        return 0;
    }


    如果是这样子设定, 看上去有人或者会认为, 里面是有四个指针, s1, s2, s3, s4, 其实不是的, s4并不是指针类型, 它只是一个普普通通的char类型, 不信我们来输出看看:




    为什么会这样子呢? 其实很简单, 我们都知道宏定义只是简单的替换, 而typedef则是一个完整的类型, 替换完之后, 就和下面那句代码一样, 所以s4它只是一个简单的char类型:

    #include <stdio.h>
    
    #define String2 char *
    
    typedef char * String;
    
    int main()
    {
        char *s1, char *s4;
        
        char *s3, char s4;
        
        return 0;
    }



    如果还不能理解的话, 大家去多实验就知道了, 好啦, 这次我们就讲到这里, 下次我们继续~~~

  • 相关阅读:
    汉语-词语:判断(逻辑学名词)
    汉语-词语:判断
    汉语-成语:生死有命,富贵在天
    汉语-成语:知人善任
    汉语-成语:真才实学
    太阳系-八大行星:地球
    汉语-词语:宇宙(哲学定义)
    汉语-词语:毅行
    汉语-词语:活在当下
    使用网络监视器(IRSI)捕捉和分析协议数据包
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4282872.html
Copyright © 2011-2022 走看看