分清 調(diào)用 還是聲明。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站建設(shè)、民權(quán)網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、民權(quán)網(wǎng)絡(luò)營銷、民權(quán)企業(yè)策劃、民權(quán)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供民權(quán)建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
====
聲明 函數(shù),前面不加類型名,默認(rèn)為int。
調(diào)用函數(shù),類型取決于 函數(shù) 聲明 時(shí) 定下的 類型。
例如, 調(diào)用
int k;
k = scanf("%d %d",x,y); // 返回整型。
若寫:
scanf("%d %d",x,y);
等于:
(void) scanf("%d %d",x,y); // 強(qiáng)制轉(zhuǎn)換,丟棄了返回值。
int。C語言規(guī)定:在定義函數(shù)時(shí),若其返回值類型為int,則可以默認(rèn)。
C語言函數(shù)有三類,分為外部函數(shù)、靜態(tài)函數(shù)、內(nèi)聯(lián)函數(shù),其中前兩種是C89標(biāo)準(zhǔn)支持,第三種是C99標(biāo)準(zhǔn)增加的。
1、外部函數(shù)
這類函數(shù)是默認(rèn)的函數(shù)類型,基本上平時(shí)我們使用的就是這種函數(shù),聲明有以下兩種方式,例如:
// 使用extern關(guān)鍵字,顯示聲明
extern int add(int a, int b);
// 或省略關(guān)鍵字extern,編譯器也會(huì)自動(dòng)認(rèn)為是extern
int add(int a, int b);
外部函數(shù)表明在當(dāng)前聲明和定義的代碼文件中可以使用,也可以在其它代碼文件中可以通過#include指令包含使用,對(duì)外部的代碼可見。
2、靜態(tài)函數(shù)
這類函數(shù)其實(shí)與外部函數(shù)相對(duì)的,因?yàn)樾枰褂胹tatic關(guān)鍵字修飾,因此稱為靜態(tài)函數(shù),其實(shí)就是內(nèi)部函數(shù)。聲明方式如下,例如:
static int add(int a, int b);
靜態(tài)函數(shù)的作用域只能在當(dāng)前聲明和定義的文件中,在其它代碼文件中無法#include使用,因此在整個(gè)程序中,特別是大型程序,有多個(gè)源代碼文件時(shí),即使定義相同名稱的兩個(gè)靜態(tài)函數(shù),也不會(huì)有命名和使用沖突。
3、內(nèi)聯(lián)函數(shù)
是新增的特性,使用inline關(guān)鍵字聲明和定義,該類函數(shù)類似#define宏定義展開,編譯時(shí)會(huì)直接將函數(shù)定義代碼在調(diào)用的地方復(fù)制展開,這樣會(huì)減少函數(shù)調(diào)用的開銷,提高運(yùn)行效率。
inline int add(int a, int b);
內(nèi)聯(lián)函數(shù)適合短小的、被頻繁調(diào)用的函數(shù),對(duì)于復(fù)雜函數(shù),無法使用。
擴(kuò)展資料:
C語言編寫注意事項(xiàng):
1、const在聲明變量中起限制作用, 該限定變量的值不能被修改。
2、%運(yùn)算符不能應(yīng)用與float或double類型。
3、char類型轉(zhuǎn)換為int型時(shí), 無法判斷它是signed還是unsigned.這樣其結(jié)果有可能為負(fù)數(shù), 因此轉(zhuǎn)換時(shí)盡量指定signed和unsigned限制符。
4、++i與i++不同之處: ++i是先+1在使用, i++是先使用i在遞加1。
5、三元運(yùn)算符"?:" 第一個(gè)表達(dá)式的括號(hào)不是必須的,但是由于三元表達(dá)式的優(yōu)先級(jí)非常低,我們還是將第一個(gè)表達(dá)式用()括起便于閱讀和理解。
6、C語言中可以使用遞歸 (即函數(shù)調(diào)用自身函數(shù)), 其不節(jié)省儲(chǔ)存器開銷也不加快執(zhí)行速度, 只是使程序緊湊便于理解。
c語言中的存儲(chǔ)類型有static 、auto、extern、及register,函數(shù)默認(rèn)的存儲(chǔ)類型應(yīng)該是extern,意思是具有外部鏈接性的。一般來說,會(huì)通過extern來聲明函數(shù)。比如下面的代碼,在1.c中定義一個(gè)函數(shù),函數(shù)的聲明寫在1.h頭文件中,在2.c中通過添加1.h的頭文件,來聲明及調(diào)用函數(shù)f()。
//1.c
void?f()?{?;?}
//1.h
extern?void?f();
//2.c
#include?"1.h"
int?main()?{?f();}
??在許多c語言初學(xué)者中編寫函數(shù)時(shí),都喜歡將無參函數(shù)中的參數(shù)類型忽略。
??但是實(shí)際上 默認(rèn)的參數(shù)類型 不是無參 void ,而是接受 任意數(shù)量和類型的參數(shù) 。也就是說 int func() 和 int func(void) 是不一樣的。下面通過一個(gè)例子加深了解一下在C語言中函數(shù)的默認(rèn)參數(shù)類型:
??所以說,在使用c語言編寫無參函數(shù)時(shí),一定要把 void 寫上去,不然會(huì)有安全隱患。
函數(shù)的返回值類型與函數(shù)的類型要一致,沒有什么默認(rèn)定義類型。
下面進(jìn)行舉例說明:
//?void?函數(shù)類型沒有返回值
void?fun1(int?a)
{
printf("%d",?a);
}
//?int型函數(shù)類型返回值為int型(只要不是void類型,都跟int型函數(shù)類似,返回值與函數(shù)類型保持一致)
int?fun1(int?a)
{
int?temp;
temp?=?2*a;
return?temp;
}
一般包括字符庫函數(shù),數(shù)學(xué)函數(shù),目錄函數(shù),進(jìn)程函數(shù),診斷函數(shù),操作函數(shù)等。
字符庫函數(shù)所在函數(shù)庫為ctype.h;數(shù)學(xué)函數(shù)所在函數(shù)庫為math.h、stdio.h、string.h、float.h;目錄函數(shù)所在函數(shù)庫為dir.h、dos.h;進(jìn)程函數(shù)所在函數(shù)庫為stdlib.h、process.h。
診斷函數(shù)所在函數(shù)庫為assert.h、math.h;接口子程序所在函數(shù)庫為:dos.h、bios.h;操作函數(shù)所在函數(shù)庫為string.h、mem.h;時(shí)間日期函數(shù)函數(shù)庫為time.h、dos.h。
擴(kuò)展資料
C語言為一種程序設(shè)計(jì)的入門語言。由于C語言的語句中沒有提供直接計(jì)算sin或cos函數(shù)的語句,會(huì)造成編寫程序困難;但是函數(shù)庫提供了sin和cos函數(shù),可以拿來直接調(diào)用。顯示一段文字,我們?cè)贑語言中找不到顯示語句,只能使用庫函數(shù)printf。
C語言的庫函數(shù)并不是C語言本身的一部分,它是由編譯程序根據(jù)一般用戶的需要,編制并提供用戶使用的一組程序。C的庫函數(shù)極大地方便了用戶,同時(shí)也補(bǔ)充了C語言本身的不足。在編寫C語言程序時(shí),使用庫函數(shù),既可以提高程序的運(yùn)行效率,又可以提高編程的質(zhì)量。
參考資料來源:百度百科-C語言庫函數(shù)
參考資料來源:百度百科-C語言函數(shù)