一個C++程序例子——指向函數的指針、含有可變形參的函數(備查)

這裏列出的兩個東西不經常使用,很容易忘記。其中含有可變參數的函數的部分來自CSDN論壇。

 

#include <iostream>
#include 
<string>
#include 
<stdarg.h>
using namespace std;


int foo(const int)
{
    printf(
"int n ");
    
return 1;
}


void foo(int(*p)(int))
{
    p(
1);
    printf(
"foo ");
}

void f(const char* str, ...)
{
    va_list ap;
    
char* s = 0;
    
int d = 0;
    
double f = 0.0;

    va_start(ap, str);
    s 
= va_arg(ap, char*);
    d 
= va_arg(ap, int);
    f 
= va_arg(ap, double);
    va_end(ap);
    
    printf(
"%s, %s, %d, %f", str, s, d, f);
}


void main()
{
    
int(*p)(const int= foo;
    foo(p);
    foo(p(
1));  //注意這個調用和上面那個的區別
    f("function""varargs"11.0);

    getchar();
}

 執行結果爲:

int n
foo
int n
int n
function, varargs, 1, 1.000000

在無法列舉出傳遞給函數的所有實參的類型和數目時,可以使用省略符形參。省略符暫停了類型檢查機制。它們的出現告知編譯器,當調用函數時,可以有0個或多個實參,而實參的類型未知。兩種形式:

void foo(parm_list, ...); //逗號可選,這個規定很麻煩

void foo(...);  //現在還不知道這種形式如何使用,待查。。。

發佈了22 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章