zoukankan      html  css  js  c++  java
  • 可变参数分析与宏分析实例

    1.#include <stdio.h>
    #include <malloc.h>

    #define MALLOC(type, n) (type*)malloc(n * sizeof(type))

    int main()
    {
        int* p = MALLOC(int, 5);
        
        int i = 0;
        
        for(i=0; i<5; i++)
        {
            p[i] = i + 1;
            
            printf("%d ", p[i]);
        }
        
        free(p);
        
        return 0;
    }

    2.#include <stdio.h>

    int add(int a, int b)
    {
        return a + b;
    }

    int mul(int a, int b)
    {
        return a * b;
    }

    int _min_(int a, int b)
    {
        return a < b ? a : b;
    }

    int main()
    {
        int i = 1;
        int j = 10;
        
        printf("%d ", mul(add(1, 2), add(3, 4)));
        printf("%d ", _min_(i++, j));
        
        return 0;
    }

    3.#include <stdio.h>

    #define ADD(a, b) a + b
    #define MUL(a, b) a * b
    #define _MIN_(a, b) ((a) < (b) ? (a) : (b))

    int main()
    {
        int i = 1;
        int j = 10;
        
        printf("%d ", MUL(ADD(1, 2), ADD(3, 4)));
        printf("%d ", _MIN_(i++, j));
        
        return 0;
    }

    4.#include <stdio.h>

    #define RESET(p, len) while( len > 0) ((char*)p)[--len] = 0

    void reset(void* p, int len)
    {
        while( len > 0 )
        {
            ((char*)p)[--len] = 0;
        }
    }

    int main()
    {
        int array[] = {1, 2, 3, 4, 5};
        int len = sizeof(array);
        
        reset(array, len);
        RESET(array, len);
        
        return 0;
    }

    说明:

    1.可变参数是C语言提供的一种函数设计技巧
    2.可变参数的函数提供了一种更方便的函数调用方式
    3.可变参数必须顺序的访问
    4.无法直接访问可变参数列表中间的参数值

    5.宏和函数并不是竞争对手
    6.宏能够接受任何类型的参数, 效率高 效率高, 易出错 易出错
    7.函数的参数必须是固定类型, 效率稍低 效率稍低, 不易出错 不易出错
    8.宏可以实现函数不能实现的功能

  • 相关阅读:
    link和@import引入css 区别,不建议使用@import
    centos8常用配置记录
    python获取txt文件中关键字的数量
    U盘装Centos7的异常记录
    Linux下密码安全策略配置
    CPU负载及利用率解析
    curl命令的简单使用(ftp)
    JVM工作原理及参数说明
    grafana使用mysql做数据源
    ZABBIX监控ESXI主机
  • 原文地址:https://www.cnblogs.com/wxb20/p/6163296.html
Copyright © 2011-2022 走看看