zoukankan      html  css  js  c++  java
  • C语言-typedef和#define

    1、关键字 typedef

    为一个数据类型起一个新的别名,typedef 的用法一般为:

    typedef OldName NewName;

    需要强调的是,typedef 是赋予现有类型一个新的名字,而不是创建新的类型。

    2、宏定义 #define

    #define 定义一个标识符来表示一个常量(变量名表示的是一个变量,但宏名表示的是一个常量。可以给变量赋值,但绝不能给常量赋值)。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。#开头的指令都属于预处理指令。

    #define  标识符  常量   //注意, 最后没有分号

    宏所表示的常量可以是数字、字符、字符串、表达式。其中最常用的是数字。

    宏定义最大的好处是“方便程序的修改”。使用宏定义可以用宏代替一个在程序中经常使用的常量。

    3、typedef 和 #define的区别 (助记:typedef为前面的数据类型起别名,#define为后面的常量做宏定义)

    typedef 在表现上有时候类似于 #define,但它和宏替换之间存在一个关键性的区别。正确思考这个问题的方法就是把 typedef 看成一种彻底的“封装”类型,声明之后不能再往里面增加别的东西。宏定义就是一种替换。

    1) 可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。如下所示:

    #define INTERGE int
    unsigned INTERGE n;  //没问题
    
    typedef int INTERGE;
    unsigned INTERGE n;  //错误,不能在 INTERGE 前面添加 unsigned

    2) 在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。例如:

    #define PTR_INT int *
    PTR_INT p1, p2;

    经过宏替换以后,第二行变为:

    int *p1, p2;

    这使得 p1、p2 成为不同的类型:p1 是指向 int 类型的指针,p2 是 int 类型。

    相反,在下面的代码中:

    typedef int * PTR_INT
    PTR_INT p1, p2;

    p1、p2 类型相同,它们都是指向 int 类型的指针。


    学习参考:http://c.biancheng.net/view/2040.html

  • 相关阅读:
    python+Appium自动化:记录遇到的坑
    python+Appium自动化:Appium元素检测
    python+Appium自动化:id元素定位
    python+Appium自动化:运行第一个appium脚本
    python+Appium自动化:Capability配置简介
    python+Appium自动化:Appium-desktop界面简介
    Appium简介以及环境安装
    monkeyrunner录制和回放功能
    monkeyrunner脚本录制和回放下载
    MonkeyRunner的简介与综合实践
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12312459.html
Copyright © 2011-2022 走看看