日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

【C语言进阶深度学习记录】三十九 C语言中的可变参数(参数可变的函数)

發布時間:2023/12/10 pytorch 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言进阶深度学习记录】三十九 C语言中的可变参数(参数可变的函数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用過printf()函數的熱都知道,printf的參數可以有多個,它是可變的,根據我們輸出參數的類型以及個數的不同來確定參數。今天來學習C語言中參數可變的函數是如何實現的。

文章目錄

    • 1 可變參數
    • 2 總結

1 可變參數

首先我們要明白一點,在C語言中,參數可變的函數的實現,要依賴于頭文件stdarg.h。所以在實現這樣的函數的時候,需要包含該頭文件。

其次,實現函數可變參數需要使用以下幾個類型參數,我們需要熟練掌握它們的使用,下面先看看這些參數是什么?

  • va_list:參數集合
  • va_arg:取具體參數值
  • va_start:標識參數訪問的開始
  • va_end:標識參數訪問的結束
  • 看了上面的參數的意義,還是不知道什么是什么。下面看一個例子,就能徹底明白了。

    下面函數的意思是求n個數的平均值。這n個數直接作為參數傳遞給函數(這么寫肯定是效率不高,這里只是為了學習使用)

    • 45-2.c
    #include <stdio.h> #include <stdarg.h>float average(int n, ...){ //這個n代表參數的個數,后面的...代表后面的參數不確定是什么va_list args; // args代表函數可變參數的集合int i = 0;float sum = 0;va_start(args, n); // 如果要遍歷args參數的話,則從args參數集合的開始,遍歷n次結束for(i=0; i<n; i++){sum+=va_arg(args, int); // 開始遍歷,取具體參數值,類型為int}va_end(args); // 代表參數集合args訪問結束return sum/n; }int main(){printf("%f\n", average(5,1,2,3,4,5));printf("%f\n", average(4,1,2,3,4));return 0; }
    • 上述代碼編譯運行結果為:


    上面代碼不難,主要是學會使用那幾個參數的使用。我們需要注意以下幾點:

    • 可變參數必須從頭到尾按照順序逐個訪問
    • 參數列表中,至少要存在一個確定的命名參數
    • 可變參數函數無法確定實際的參數的數量,需要在運行的時候根據具體的傳參結果來計算
    • 可變參數函數,無法確定參數的實際類型

    注意:如果va_arg中指定的參數的類型與實際的不匹配,那么最終的計算結果將是不可預測的。

    2 總結

    • 學會定義可變參數的函數。主要是使用方法。

    總結

    以上是生活随笔為你收集整理的【C语言进阶深度学习记录】三十九 C语言中的可变参数(参数可变的函数)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。