C 函數(shù)參數(shù)

2018-07-10 10:12 更新

學(xué)習(xí)C - C函數(shù)參數(shù)

您可以使用const關(guān)鍵字限定一個(gè)函數(shù)參數(shù),這表示函數(shù)會處理參數(shù)作為常量。

通常,將const關(guān)鍵字應(yīng)用于作為指針的參數(shù)。

這里是一個(gè)帶有const參數(shù)的函數(shù)的例子:

bool hello(const char* pmessage){
   ...
}

具有可變數(shù)量參數(shù)的函數(shù)

以下代碼顯示了如何使用可變長度參數(shù)聲明一個(gè)函數(shù)原型。

double average(double v1, double v2, ...);

省略號表示一個(gè)變量參數(shù)數(shù)量可以跟隨前兩個(gè)固定參數(shù)。

可變長度參數(shù)列表必須至少有一個(gè)固定參數(shù)。

要引用參數(shù),請使用指針。

您需要使用三個(gè)函數(shù)來處理可變數(shù)量的參數(shù)。

它們稱為va_start(),va_arg()和va_end()。

您必須調(diào)用va_start()來初始化變量參數(shù)列表指針的值功能。此指針必須聲明為類型va_list。

va_start()具有以下形式:

void va_start(va_list parg, last_fixed_arg);

此函數(shù)接受兩個(gè)參數(shù):類型為va_list的指針parg,以及為該函數(shù)指定的最后一個(gè)固定參數(shù)的名稱。

va_list類型是在stdarg.h中定義的類型。

va_arg()的第一個(gè)參數(shù)是通過調(diào)用va_start()初始化的變量parg。

第二個(gè)參數(shù)是類型的規(guī)范期望找到的參數(shù)。

函數(shù)va_arg()返回由parg指定的當(dāng)前參數(shù)的值這是存儲在值。

它更新指針parg以指向列表中的下一個(gè)參數(shù)。

va_end()是清理。

它將parg指針重置為NULL。


    #include <stdio.h> 
    #include <stdarg.h> 
      //from www. j  av a  2 s  .c  om
    double average(double v1 , double v2,...);       // Function prototype 
      
    int main(void) 
    { 
      double v1 = 1.5, v2 = 2.5; 
      int num1 = 6, num2 = 5; 
      long num3 = 2L, num4 = 12L; 
      
      printf("Average = %.2lf\n", average(v1, 3.5, v2, 4.5, 0.0)); 
      printf("Average = %.2lf\n", average(1.0, 2.0, 0.0)); 
      printf("Average = %.2lf\n", average( (double)num2, v2,(double)num1, (double)num4,(double)num3, 0.0)); 
      return 0; 
    } 
      
    // Function to calculate the average of two or more arguments 
    double average( double v1, double v2,...) { 
      va_list parg;                      // Pointer for variable argument list 
      double sum = v1 + v2;              // Accumulate sum of the arguments 
      double value = 0.0;                // Argument value 
      int count = 2;                     // Count of number of arguments 
      
      va_start(parg,v2);                 // Initialize argument pointer 
      while((value = va_arg(parg, double)) != 0.0) { 
        sum += value; 
        ++count; 
      } 
      va_end(parg);                                  // End variable argument process 
      return sum/count; 
    } 

上面的代碼生成以下結(jié)果。



main()函數(shù)

main()函數(shù)是執(zhí)行開始的地方。

main()可以有一個(gè)參數(shù)列表,這樣你可以傳遞參數(shù)給main()當(dāng)你執(zhí)行一個(gè)程序時(shí)命令行。

您可以編寫main()函數(shù),不帶參數(shù)或使用兩個(gè)參數(shù)。

當(dāng)你寫參數(shù)的main()第一個(gè)參數(shù)是int類型,并存儲一個(gè)計(jì)數(shù)參數(shù),包括程序本身的名稱。

main()的第二個(gè)參數(shù)是一個(gè)指向字符串的指針數(shù)組。


#include <stdio.h> 
int main(int argc, char *argv[]) 
{ 
  printf("Program name: %s\n", argv[0]); 
  for(int i = 1 ; i<argc ; ++i) 
    printf("Argument %d: %s\n", i, argv[i]); 
  return 0; 
} 

上面的代碼生成以下結(jié)果。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號