9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 知識大全 > 知識百科 > 百科知識 > c語言中什么是參數

c語言中什么是參數

時間: 冠墩784 分享

c語言中什么是參數

  如何寫可變參數的C函數以及這些可變參數的函數編譯器是如何實現的呢?下面是學習啦小編為大家整理的關于c語言的參數介紹及使用,希望可以幫到大家哦。

  簡單的可變參數的C函數

  下面我們來探討如何寫一個簡單的可變參數的C函數.寫可變參數的C函數要在程序中用到以下這些宏:

  void va_start( va_list arg_ptr, prev_param );

  type va_arg( va_list arg_ptr, type );

  void va_end( va_list arg_ptr );

  va在這里是variable-argument(可變參數)的意思.

  這些宏定義在stdarg.h中,所以用到可變參數的程序應該包含這個頭文件.下面我們寫一個簡單的可變參數的函數,改函數至少有一個整數參數,第二個參數也是整數,是可選的.函數只是打印這兩個參數的值.

  void simple_va_fun(int i, ...)

  {

  va_list arg_ptr;

  int j=0;

  va_start(arg_ptr, i);

  j=va_arg(arg_ptr, int);

  va_end(arg_ptr);

  printf(%d %dn, i, j);

  return;

  }

  我們可以在我們的頭文件中這樣聲明我們的函數:

  extern void simple_va_fun(int i, ...);

  我們在程序中可以這樣調用:

  simple_va_fun(100);

  simple_va_fun(100,200);

  從這個函數的實現可以看到,我們使用可變參數應該有以下步驟:

  1)首先在函數里定義一個va_list型的變量,這里是arg_ptr,這個變量是指向參數的指針.

  2)然后用va_start宏初始化變量arg_ptr,這個宏的第二個參數是第一個可變參數的前一個參數,是一個固定的參數.

  3)然后用va_arg返回可變的參數,并賦值給整數j. va_arg的第二個參數是你要返回的參數的類型,這里是int型.

  4)最后用va_end宏結束可變參數的獲取.然后你就可以在函數里使用第二個參數了.如果函數有多個可變參數的,依次調用va_arg獲取各個參數.

  如果我們用下面三種方法調用的話,都是合法的,但結果卻不一樣:

  1)simple_va_fun(100);

  結果是:100 -123456789(會變的值)

  2)simple_va_fun(100,200);

  結果是:100 200

  3)simple_va_fun(100,200,300);

  結果是:100 200

  我們看到第一種調用有錯誤,第二種調用正確,第三種調用盡管結果正確,但和我們函數最初的設計有沖突.下面一節我們探討出現這些結果的原因和可變參數在編譯器中是如何處理的.

  可變參數在編譯器中的處理

  我們知道va_start,va_arg,va_end是在stdarg.h中被定義成宏的,由于1)硬件平臺的不同 2)編譯器的不同,所以定義的宏也有所不同,下

  面以VC++中stdarg.h里x86平臺的宏定義摘錄如下(''號表示折行):

  typedef char * va_list;

  #define _INTSIZEOF(n)

  ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )

  #define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )

  #define va_arg(ap,t)

  ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )

  #define va_end(ap) ( ap = (va_list)0 )
看了“c語言中什么是參數”的人還看了:

1.c語言什么是變量 變量的分類

2.C語言程序中什么是函數

3.c語言中什么是函數

4.c語言中typedef的用法

5.c語言string的用法

6.c語言中define的用法

1380478 主站蜘蛛池模板: 国产成人综合久久精品下载| av激情亚洲男人的天堂| 亚洲国产精品成人av网| 精品一区二区三区不卡| 国产亚洲精久久久久久久91| 又黄又爽又色的少妇毛片| 婷婷色综合视频在线观看| 成av人片一区二区久久| 十八禁午夜福利免费网站| 色午夜久久男人操女人| 丁香婷婷综合激情五月色 | 欧美中文字幕在线看| 豆国产97在线 | 亚洲| 国产美女永久免费无遮挡| 怡红院一区二区三区在线| 好姑娘高清影视在线观看| 亚洲男人在线天堂| 免费无码va一区二区三区| 18禁亚洲一区二区三区| 国产精品丝袜亚洲熟女| 国产免费又黄又爽又色毛| 人妻少妇精品无码专区二区| 亚洲男人电影天堂无码| 深夜视频国产在线观看| 丰满少妇高潮无套内谢| 欧美18videosex性欧美tube1080| 国内精品亚洲成av人片| 国产成人a在线观看视频免费| 午夜精品福利亚洲国产| 色8久久人人97超碰香蕉987| 国产精品国产精品偷麻豆| 亚洲区综合中文字幕日日| 人妻少妇邻居少妇好多水在线 | 亚洲国产成人久久精品app| 毛片一区二区在线看| 韩国美女福利视频在线观看| 亚州中文字幕一区二区| 极品vpswindows少妇| 精品素人AV无码不卡在线观看| 91亚洲国产成人精品性色| 最新国产精品好看的精品|