zoukankan      html  css  js  c++  java
  • typedef的用法再思考

    最近重读c语法,有所感悟,记录。

    有时候感悟,其实就是猜,假想,作者创建语言的想法,通俗的讲就是丹尼斯灵魂附体了,这个时候任何c语言难点对于你来说,就像吃饭喝水一样简单了,同时还能发现它优美动人之处。

    typedef的作用就是给类型创建一个别名。但类型分2种,1种是基础类型,1种是自定义类型。

    1、基本类型的别名创建。

    typedef    int    I32;  //为int创建别名I32
    I32 a,b;     //等同与int a,b

     2、自定义类型。

    typedef    int (*pFun)(int,int);

    咦!!!,好像创建的语法和1不太一样了,为啥就不能统一了,想下面这样创建语法呢,让我少记点东西!!!

    typedef int (*)(int,int)   pFun;

    呵呵,这一刻如果你丹尼斯附体的话,他就会告诉你,这样做有一个致命的缺点!!!,因为,你不能确定pFun在左侧类型中的位置,看下面:

    typedef   int (*pFun)(int,int);   //pFun是一个指针,指向一个函数。
    typedef   int (*)pFun(int,int);   //pFun是一个函数,返回值是一个int型指针。

    而你不能确定pFun的具体位置,所以这样做,不能给编译器一个准确的答案,所以,这样做不行。

    但是大师就是大师,脑洞就是大,自定义类型,直接在左面加一个typedef,就把一个变量名,声明为一个自定义类型的别名了,既简单,又明了,你现在还怪设计者吗?

  • 相关阅读:
    Problem D: 双向冒泡排序
    Problem C: 查找最大元素
    Problem D: 小平查密码
    Problem C: 文件单词首字母大写
    Problem B: 文件操作文本文件读入
    Problem A: 文件操作二进制文件读入
    Problem A: 实现链表(线性表)
    【leetcode】包含min函数的栈
    【leetcode】反转链表
    【leetcode】合并两个排序的链表
  • 原文地址:https://www.cnblogs.com/litifeng/p/8524643.html
Copyright © 2011-2022 走看看