C 基礎知識

2021-06-20 12:55:32 字數 600 閱讀 4491

主要記錄一些偏僻的,接觸不多的知識點和一些比較重要的知識點。

內嵌函式(inline):函式呼叫需要占用記憶體空間(主要是棧空間)進行引數傳遞,並產生程式執行轉移(pc指標跳轉),這些都需要時間開銷。有些函式呼叫率較高,但函式內**很短,我們可以用表示式替代該函式,但會造成**可讀性降低。內聯函式必須在呼叫前定義或宣告,因為必須在替換之前就已經宣告替換的**,即「內聯函式必須在被呼叫前被宣告或定義」。

1、不是所有函式都能內聯,遞迴、虛函式就不行;

2、內聯函式只是用與1-5行的短**,並且是呼叫率很高的函式,對於包含很多行**的大函式,其函式呼叫和返回的開銷對於其執行來說是微不足道的;

3、即使宣告乙個函式為inline,在編譯後執行的過程中也不一定是內聯的(inline只是一種生命,真正的是否將其作為內聯函式,取決於編譯器,不是所有的編譯器都支援inline);

4、inline的宣告和定義最好都在.h檔案中,方便進行工程管理;

5、與巨集定義(#define)有區別,內聯函式是直接飲用,而巨集定義有時候會自己先運算一下(具體請查詢巨集定義的概念)。

指標:任何指標在定義時都需要初始化,如果定義指標時不知道其具體指向的內容,則將其初始化為0.

C 基礎知識

抽象類 abstract class 一種不可以被例項化的類。抽象類中一般含有抽象方法,當然也可有具體實現。繼承類只有實現過所有抽象類的抽象方法後才能被例項化。介面 inte ce 只含有共有抽象方法 public abstract method 的類。這些方法必須在子類中被實現。反射 程式集包含模...

c 基礎知識

或運算的意義是什麼 0 0 0 0 1 1 1 0 1 1 1 1 無進製與運算的意義是什麼 在vc中,視窗的每個屬性對應乙個只有一位為1的16位的二進位制數,當增加某屬性做或運算 即可,取消某個屬性只需與 上這個屬性的取反。cs.style ws maximizebox 和cs.style cs....

C 基礎知識

1 malloc和new區別與聯絡 a malloc malloc為函式,需要標頭檔案,申請的無型別,需要強制轉換 free釋放。示例 char p char malloc 10 sizeof char free p b new new是運算子,不需要標頭檔案,申請的是有型別的,自動呼叫建構函式 d...