zoukankan      html  css  js  c++  java
  • C语言和指针-回顾22-可变参数列表

    例子:

    两个注意点:

    1. 可变参数里面char会被扩展成int
    2. 使用printf一次性打印所有可变参数时,第一个可变参数会在最后才被打印(反方向打印)。
    #include<stdio.h>
    
    #include <stdio.h>
    #include <stdarg.h>
    
    void SHA_Init(char *my_string, ...)
    {
        printf("%s
    ",my_string);
        va_list my_va_list;
        va_start(my_va_list, my_string);
        printf("%d ",va_arg(my_va_list,int));
        printf("%d ",va_arg(my_va_list,int));
        printf("%d ",va_arg(my_va_list,int));
        printf("%c ",va_arg(my_va_list,int));
        printf("%c ",va_arg(my_va_list,int));
        printf("%c ",va_arg(my_va_list,int));
        printf("%s
    ",va_arg(my_va_list,char*));
        va_end(my_va_list);
        printf("%s
    ",my_string);
    }
    
    void SHA_Init_2(char *my_string, ...)
    {
        printf("%s
    ",my_string);
        va_list my_va_list;
        va_start(my_va_list, my_string);
        vprintf("%d,%d,%d,%c,%c,%c,%s
    ", my_va_list);
        va_end(my_va_list);
        printf("%s
    ",my_string);
    }
    
    /* strange case */
    void SHA_Init_3(char *my_string, ...)
    {
        printf("%s
    ",my_string);
        va_list my_va_list;
        va_start(my_va_list, my_string);
        printf("%s %c %c %c %d %d %d
    ",
            va_arg(my_va_list,char*),
            va_arg(my_va_list,int),
            va_arg(my_va_list,int),
            va_arg(my_va_list,int),
            va_arg(my_va_list,int),
            va_arg(my_va_list,int),
            va_arg(my_va_list,int));
        va_end(my_va_list);
        printf("%s
    ",my_string);
    }
    
    void SHA_Log(char *format, ...)
    {
       va_list args;
       
       va_start(args, format);
       vprintf(format, args);
       va_end(args);
    }
    
    int main ()
    {
        SHA_Init("**************************************",1,2,3,'A','B','C',"I love SHA!!!");
        SHA_Init_2("+++++++++++++++++++++++++++++++++++",1,2,3,'A','B','C',"I love SHA!!!");
        SHA_Init_3("-----------------------------------",1,2,3,'A','B','C',"I love SHA!!!");
        SHA_Log("%s Love %s
    ", "I", "SHA");
        return(0);
    }

    Output :

    **************************************
    1 2 3 A B C I love SHA!!!
    **************************************
    +++++++++++++++++++++++++++++++++++
    1,2,3,A,B,C,I love SHA!!!
    +++++++++++++++++++++++++++++++++++
    -----------------------------------
    I love SHA!!! C B A 3 2 1
    -----------------------------------
    I Love SHA

  • 相关阅读:
    asp.net mvc 缓存
    C#版 Socket编程(最简单的Socket通信功能)
    c# 读取嵌入式文件
    js 对象 copy 对象
    double截取小数点位数
    c#读取excel
    观察者设计模式
    xml序列化方式
    sicily Huffman coding
    sicily Fibonacci 2
  • 原文地址:https://www.cnblogs.com/wuyuntana/p/14993982.html
Copyright © 2011-2022 走看看