• 学习第19天


    C语言

    1. 不带参数的宏定义、

      1. 用来替换的——字符串替换标识符、

      2. 标识符也叫宏名、

      3. # define a 78
        int main()
        {
        	printf("%d
        ", a);
        }
        
        
        
        # define a 78
        int main()
        {
        	int b;
        	b = 3 * a;
        	printf("%d
        ",b);
        }
        
        
        
      4. 将宏名替换字符串的过程叫做——宏展开、

      5. 宏定义不是C语句、——define后面不用加分号、如果加分号则分号也会被替换、

      6. define的有效范围是自#define 之后直至本源文件结束、define不能跨文件使用、

      7. undef可以终止宏定义的作用区域、

      8. define可以引用已经定义的宏、可以层层置换

      9. 字符串内的字符即使与宏相同、也不进行替换——双引号内容不会被替换、

    2. 带参数的宏定义、

      1. 、相当与增加了形参

      2. # define a(c,b)(c)*(b)//括号可以不添加
        # define a(c,b)c*b
        int main()
        {
        	int e = a(1,3);
        
        	printf("%d
        ", e);
        
      3. 在形参后面增加括号有助于减少错误

      4. 宏定义时宏名和带参数的括号之间不能加空格

      5. 宏定义与函数的区别

        1. 函数调用时先求实参表达式的值、然后带入形参、

        2. 带参数的宏、只是简单的替换、并没有求表达式的值、

        3. 函数调用是在程序运行时处理、需要分配内存

        4. 宏展开不分配内存、因为是在编译时进行的、所以没有值传递和返回值的概念、

        5. 宏的参数没有类型限制、

        6. 宏使用次数多时将会增加源程序的长(文件的大小?)函数则不会此出现此情况

        7. 宏展开占用编译时间、而不占用程序的运行时间、函数调用则占用的是程序运行的时间、

        8. 函数调用步骤

          1. 分配内存
            2. 传递参数
            3. 执行函数体
            4. 返回值
        9. 、特殊

          1. define MAX(a,b) (a)>(b)?(a);(b)
            int main()
            {
            	int e = MAX(4,5);
            	printf("%d
            ", e);
            }//比较大小
            
    3. C语言的三种预处理功能

      1. 宏定义、
        2. 文件包含、
        3. 条件编译、
  • 相关阅读:
    【转】android布局属性详解
    【转】Android开发学习笔记:5大布局方式详解
    【转】android:layout_gravity和android:gravity的区别
    【转】Android fill_parent和wrap_content分析
    @SuppressWarnings的使用、作用、用法
    android bin目录下的.ap_是神马文件?
    Android 工程目录结构简介
    安卓dalvik和art区别
    Android下HelloWorld项目的R.java文件介绍
    android的R.java
  • 原文地址:https://www.cnblogs.com/chengyaohui/p/13627869.html
Copyright © 2020-2023  润新知