第7章,函數(shù)

函數(shù)

函數(shù)定義

K&R 和ANSI有差別

return expression;

return 語句允許你從函數(shù)體的任何位置返回,并不一定要在函數(shù)體的末尾。expression可以省略,直接來一個return ;這個時候函數(shù)的類型就聲明為void;

函數(shù)聲明

1、原型

(提前判斷我們函數(shù)調(diào)用正確與否的方法)

方式一:

方式二:

如果函數(shù)的原型同時也被#include指令包含到定義函數(shù)的文件中,編譯器還可以確認(rèn)函數(shù)原型域函數(shù)定義是否匹配。

2、函數(shù)的缺省認(rèn)定

對于無法見到函數(shù)原型的情況,編譯器會假定在這個函數(shù)的調(diào)用時參數(shù)的類型和數(shù)量是正確的,它同時會假定函數(shù)將返回一個整形值。對于哪些返回值并非整形的函數(shù)而言,這種隱式的認(rèn)定常常導(dǎo)致錯誤。

函數(shù)的參數(shù)

C函數(shù)的所有參數(shù)均以“按值調(diào)用”方式進行傳遞,這意味著函數(shù)將獲得參數(shù)值的一份拷貝。這里需明確的是函數(shù)傳遞數(shù)組名的時候?qū)嶋H上傳遞的是數(shù)組的指針,這個值是一份指針的拷貝,所以可以影響到原數(shù)組。

ADT和黑盒

如下7.5a和7.5b文件

可變參數(shù)列表

1、stdarg宏

/*

**大凡子寫的可變參數(shù)的demo,用于計算指定數(shù)量的值的平均值

*/

#include

float average(int n_values,...)

{

va_list var_arg;

int count;

float sum=0;

/*

**1、初始化va_list變量

*/

va_start(var_arg,n_values);

for(count=0;count

{

/*

**2、通過指定參數(shù)類型,依次訪問可變按參數(shù)

*/

sum +=va_arg(var_arg,int);

}

/*

**3、訪問完畢最后一個可變參數(shù)后,需要va_end

*/

va_end(var_arg);

return sum/n_values;

}

void main()

{

float a;

a=average(8,1,2,3,4,5,6,7,8);

printf("%f\n",a);

}

2、可變參數(shù)的限制

補充:對于哪些沒有原型的函數(shù),傳遞給函數(shù)的實參將進行缺省參數(shù)提升;char和short類型的實參轉(zhuǎn)換為int,float類型的實參轉(zhuǎn)換為double類型。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [toc] 第7章 函數(shù) 7.1 任意參數(shù) *args **kwargs 使用 7.2 只能接受關(guān)鍵字參數(shù) (py...
    brother阿張閱讀 264評論 0 0
  • 我們在C語言編程中會遇到一些參數(shù)個數(shù)可變的函數(shù),例如printf() 這個函數(shù),它的定義是這樣的: int pri...
    Mr_Me閱讀 846評論 0 2
  • 1、定義函數(shù)的兩種方式:1)函數(shù)聲明:存在函數(shù)聲明提升2)函數(shù)表達式:使用前必須先賦值;匿名函數(shù)(拉姆達函數(shù)) 2...
    94小輝閱讀 354評論 0 0
  • //不要這么做 因為不同瀏覽器對上面代碼理解不同,ie不管condition是否為真,都會執(zhí)行alert('Yo!...
    __越過山丘__閱讀 159評論 0 0
  • 不再喜歡憂傷 我要跟它決斷 盡管 那是我曾經(jīng)的最愛 看到落葉憂傷 看到新芽也惆悵 皺起眉頭 把它擰成疙瘩 就像 現(xiàn)...
    自我覺察日記本閱讀 243評論 22 9

友情鏈接更多精彩內(nèi)容