C的宣告與定義(Thinking C )

2022-08-26 08:27:08 字數 1091 閱讀 8388

1 c的宣告與定義

宣告是告訴編譯器存在某乙個函式或者變數

定義是編譯器為某一名稱的函式或變數分配儲存位址

定義可以包括宣告

宣告常常使用extern關鍵字,不帶函式體的函式自動作為宣告,可以理解為自動加上extern關鍵字。

c++函式原型: 返回型別 函式名(《引數1型別》,《引數2型別》...);

c++中函式宣告至少是乙個函式原型,函式定義時必須給出各個引數名

c 和c++ 都允許對函式重複宣告

2 c++中,struct裡面可以宣告,定義函式,所宣告的函式成為成員函式,成員函式的定義可以在結構體之外,定義:

返回型別 結構體名稱::函式名(參數列)

;::為c++的新定義的運算子,成為作用域限定符

3 c++中如果乙個結構體只有乙個成員函式,那麼sizeof得到的值是乙個負數

4 預處理防止重複宣告結構體

#ifndef foo_h_

#define foo_h_

// rest of header here ...

#endif // foo_h_

5 巢狀結構宣告

struct stack

*head; //定義了link* 型別的乙個名稱為head的成員屬性

//初始化函式與link的initailize()函式不干擾

void inititalize();

void push();

void peek();

void pop();

void cleanup();

};各個函式的定義需要根據巢狀結構使用::進行定義函式

6 全域性範圍分解

在定義成員函式的時候,函式體裡面的標識名如果不用作用域限定符::,則預設去檢查結構體或者類裡面是否有這個成員,如果沒有則再去檢查全域性識別符號是否有,但有時結構體和全域性都有某個同名的識別符號時,我們需要用到的是全域性的識別符號,則需要通過   ::標識名  來使用標識函式或變數,就是用過前面不加任何域的作用域運算子來指定標識,如

int a;//全域性變數a

void f(); //全域性函式f

struct a

;void a::f()

;

C 宣告與定義

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

C語言的定義與宣告

1.變數的定義 宣告 變數的宣告有兩種情況 1 一種是需要建立儲存空間的。例如 int a 在宣告的時候就已經建立了儲存空間。2 另一種是不需要建立儲存空間的。例如 extern int a 其中變數a是在別的檔案中定義的。前者是 定義性宣告 defining declaration 或者稱為 定義...

C語言的宣告與定義

keil的專案中,遇到呼叫其他c檔案函式和變數的情況 對於函式,在a.c下面進行編寫,之後在a.h下面進行宣告,其他檔案包含a.h即可呼叫。對於變數,在a.c下面進行定義,在a.h下面也要進行一下宣告,其他檔案使用此變數時,包含a.h即可使用。關於變數的定義與宣告 變數定義即為變數分配儲存空間,也可...