C 函式的宣告與定義

2021-12-30 00:29:02 字數 857 閱讀 5498

1、函式的宣告

在c和c 的程式裡,完成一項工作的一種典型的方式就是呼叫乙個函式去做那件事。定義函式是程式設計師刻畫怎樣完成某個操作的一種方式。乙個函式只有先宣告後才能夠呼叫。

在乙個函式的生命中,需要給出函式的名字,這個函式返回值的型別,以及在呼叫這個函式的時候必須提供的引數的個數和引數型別。看如下宣告:

void fun(x,y) ;//這種宣告是毫無意義的,因為引數型別未知。

2、函式的定義

在程式中呼叫某個函式,首先必須在某個地方定義(僅僅定義一次)。乙個函式的定義也就是給出了函式體的函式宣告。例如:

extern  void swap(int * ,int *);  //宣告

void swap(int *p, int *q)

函式的定義和對它的所有宣告都必須描述了同樣的型別,由於引數名不作為型別的一部分,因此引數名字不必保持一致。

3、靜態變數

區域性變數會**程達到其定義的時候進行初始化。按照預設方式,這樣的事情發生在每次函式被呼叫的時候,且函式的每乙個呼叫都有自己的乙份區域性變數的副本。但是,當區域性變數被宣告為static時,它將只有唯一的乙個靜態物件,對它的初始化只發生**程第一次執行到它的定義時進行。

看下面的程式:

#include

using namespace std;

void showstatic(int a)

}int main()

此程式的輸出為:

n == 0,x == 0

n == 1,x == 0

n == 2,x == 0

從上面的輸出可以看出,static int n 只有在函式第一次呼叫時被初始化為0,而區域性變數x在函式每次執行到int x時都被初始化為0。

C 宣告與定義

一般解釋來說 宣告是告訴編譯器存在這麼乙個識別符號。定義則是為程式申請一塊記憶體。下面舉例說下需要注意的事項。a.如果宣告有初始化式,就被當作定義,即使前面加了extern。只有當extern宣告位於函式外部時,才可以被初始化。例如 extern double pi 3.1416 定義 b.除非有e...

C 模板函式定義與宣告分離

我們知道模板函式或模板類的定義一般都是和宣告一起在標頭檔案中,但是這樣的話,就暴露了內部實現,有什麼辦法能夠將定義和宣告進行分離呢?答案是 有的 標頭檔案 test.h class test cpp檔案 test.cpp include test.h templatevoid test f t va...

C 函式的宣告定義

include 宣告 extern char mystrstrpoint char dest,char src extern char mystrstrarr char dest,char src extern char mystrcat char dest,char src extern void...