C 筆記記錄貼1

2021-08-07 14:14:39 字數 2002 閱讀 8818

1、inline內聯函式和普通函式的區別:

(1)inline函式沒有普通函式標準的棧幀開闢和回退過程,效率高。

(2)inline在編譯階段處理,可寫在標頭檔案中或呼叫點前。

(3)i

nline只在release版本中起作用。在debug中和普通函式無異。

(4)用inline修飾的函式最後由編譯器決定是否處理成內聯,如遞迴函式等式就不能被處理為inline。

(5)inline在函式呼叫點把函式**展開從而不產生函式呼叫的開銷,不產生函式符號,所以其他檔案不可訪問該函式。

(inline需要加在函式定義前。類中定義的函式都是內聯的 )

2、函式過載問題:

(1)c語言的函式符號生成只

和函式名字有關

。(2)c++函式符號的生成,和

函式名及

引數列表

有關。(3)

c++中函式名同,引數列表不同,稱為過載。

(4)要

過載的函式必須處

在同一作用域

。(5)

被const

和volatile

修飾的非指標

和非引用

形參不能構成過載

。3、const的使用:

(1)const type m;限定m不可變。

1)const在前面

const int n; //n是const

const char *p; //*p是const, p可變

const char* const p

2; //p

2和*p

2都是const

2)const在後面

int const

m; //

m是const

char const * p

3; //*p

3是const, p3可變

char* const p

4; //p

4是const,*p4可變

char const* const p

5; //p

5和*p

5都是const

(2)c中const

可初始化一次,之後不可被修改,是

常變數,可被指標修改,不可定義陣列長度。

(3)c++中const

必須初始化

,不可修改,是

常量,可被指標修改,可用來定義陣列長度。

(4)c++中在編譯時用const修飾的量會被

替換成初始值

。若初始時賦的變數,則會它變成常變數。

3、引用:

(1)可看做更安全的指標。int &b = a;給a取別名為b,修改b就是修改a。

(2)引用自帶解引用,可以訪問引用的記憶體。引用不參與型別。

(3)引用必須初始化

,之後不可指向其他變數(不能重複引用)。

(4)引用的量必須可定址。

(5)引用

無法定址的常量

(如10或者暫存器內的)必須

用const引用

(如const int &a=10產生乙個

臨時量:tmp=10,再對tmp引用)

(6)引用常量用常引用(如位址)。

內建型別

產生的臨時量是常量

(返回值在暫存器內無法定址)。

自定義型別

(class,struct)產生的

臨時量是變數

(返回值可指標、引用操作)。這裡需要注意的一點是:如果自定義型別是隱式轉換產生的臨時量是常量。

1)a+++++b//根據貪吃法,分成a++ ++ +b這個表示式error。因為a++返回給臨時量,他是常量。 2)

++a+++b//++ a++ +b這個表示式error因為首先執行a++。 3)

cout<<(++a)+(++a)+(++a); →++a;++a;++a;cout<++a返回給臨時量

4)cout<<(a++)+(a++)+(a++); →cout下面是指標和引用的應用:

int main()



程式設計記錄貼 C 篇

原因 c 更新,撇棄或優化了原先不安全一些的語法 函式,舊 會報 unsafe,須用其他更安全語法的代替了 解決方案 方法一 在程式最前面加 define crt secure no deprecate 方法二 在程式最前面加 define crt secure no warnings 方法三 在程...

複習貼 Java基礎筆記 1

1.判斷float在後面要加f。如果是小數,需要加f,不是小數,預設往下轉換不會報錯。但是double不能轉換成float,從上往下轉,為強轉型別 2.物件是存在棧中,引用的位址存在堆中 3.棧就是先進先出的桶,堆就是二叉樹 4.int 無法轉為封裝型別double 如 double d 3 會報錯...

git 命令記錄貼

記錄下最近使用git的場景。問題 1 將乙個完整的專案發布到已建立好的git位址 碼雲 執行步奏 1 配置自己的公鑰 2 檢查是否連線成功 ssh t git git.oschina.net welcome to git osc,張輝 3 初始化專案資料夾 git init 4 同步線上版本庫 gi...