c 基本知識

2021-09-25 12:01:27 字數 1584 閱讀 7752

函式過載:c語言的符號生成規則:只和函式名有關

c++的符號生成規則:函式原型(函式頭部),

1.返回值

返回值不能作為過載的依據,可能會產生二義性

2.函式名

c語言的符號生成規則只和函式名有關,如果把函式名作為返回值的話,就和c語言衝突了.

3.函式形參(1)引數個數(2)引數型別(3)引數順序

函式形參作為函式過載的依據.

函式過載的三要素:1.同名2.不同參3.同作用域

malloc和new的區別:

1.new關鍵字,malloc函式

2.new自由儲存區3.malloc堆

3.operator new,construct(可以做初始化) malloc(單純開闢內容)

4.new可以過載,malloc不能過載

5.new可以呼叫malloc,malloc不能呼叫new

6.記憶體開闢,new丟擲異常,malloc返回null,

7.new可以開闢常量,malloc不能

malloc:void* malloc(size_t size);//malloc函式原型

void free(void* ptr)

new delete

int* p=malloc(1)//兩個錯誤

(導致記憶體洩漏)(不能申請1)

int* p=new int;

int a;

char* pc=new (&a) char(『a』); (重定位new)

const:c語言:常變數

編譯階段,看常變數有沒有做左值,其他的處理和變數是一樣的.

c++:常量

編譯階段,將用到常量的地方替換成常量初始化的值.

1.定義常量時一定要初始化.

2.不允許做左值.

3.不允許間接訪問來修改常量記憶體 杜絕間接訪問的風險

c:const修飾的全域性變數 g

c++:const修飾的全域性變數 l extern

常函式:函式後面加const//修飾this指標

引用:別名(引用底層以指標做支援)

1.引用一定要初始化.(引用是記憶體單元的別名)

2.引用不能引用不能取位址的資料

3.引用不能改變

4.引用變數只能使用引用變數所有引用的資料.

inline函式:編譯階段:在**呼叫點直接**展開

內聯函式和static修飾的函式的區別:

1.inline函式沒有開棧和清棧的開銷2.static有

2.inline在呼叫點直接**展開 static函式符號屬性

inline函式和巨集的區別

1.inline 編譯 型別檢查和安全檢查

2.巨集 預編譯 無

3.inline是乙個更加安全的巨集

inline的注意事項:

1.實現在標頭檔案下

2.只在realease版本生效

3.給編譯器的乙個建議(遞迴,迴圈,switch)

4.基於實現,不是基於宣告

inline的缺點:

以**膨脹為代價,空間換時間,有個閥值.

建議:1.開棧開銷》執行的開銷(建議設為)

2.開棧開銷《執行的開銷(不建議設為)

C 基本知識

內聯函式 在c 98的標準下為63個關鍵字 1.普通的命名空間 namespace n1 n1為命名空間的名稱 2.命名空間可以巢狀 namespace n2 namespace n3 3.同乙個工程中允許存在多個相同名稱的命名空間,編譯器最後會合成同乙個命名空間中。1.加命名空間名稱及作用域限定符...

c 基本知識

1.類 包含某一物體的基本屬性的抽象。2.物件 具體指某乙個物體。實實在在存在的東西。3.建構函式 負責類建立物件的函式。如果類沒有宣告建構函式,c 編譯器會提供預設的無參的建構函式。這個函式只負責建立物件,不負責物件初始化工作。4.析構函式 負責釋放物件,記憶體的 5.變數訪問修飾符 public...

C 基本知識

c 基本語法 特點 1每條語句以分號結尾,建議一行一語句 2嚴格區分大小寫 3 塊使用來界定,塊種可包含任意條語句 注釋 單行注釋 多行注釋 摺疊 region.endregion 變數 計算機種佔據一定記憶體單元的儲存區域。變數名 儲存資料的變數所佔據的那塊記憶體單元的標識名。變數的命名規則及特點...