C 常見用法規範整理

2021-06-20 05:24:36 字數 1760 閱讀 7859

一、表示式和基本語句

1、與零或空的比較:

bool:if(flag)  if(!flag)

int:if(flag == 0)  if(flag != 0)

float:if(flag > -a && flag < a)   可以定義float a = 0.00001(允許誤差)  不能將float與0直接比較,因為精度不同。

指標:if(flag == null)  if(flag != null)

2、for迴圈中,長迴圈放在最內層,可以減少cpu跨切迴圈的次數,迴圈應避免使用半開半閉區間。

for(int i=0; i<5; ++i)

} 3、邏輯判斷放在迴圈外面,不可以打斷迴圈流水線。

if(flag)

} 二、常量

1、const系統會自動進行安全檢查,#define不會,容易產生邊際效應。

在類中要使用常量,用列舉比較好,列舉不能有浮點型資料。

class a;

int array[size]; };

三、函式

1、c語言無返回型別的函式會被預設成int,c++必須有返回型別。

2、return不能返回指向棧記憶體的指標或引用,因為函式執行完的時候自動銷毀。

3、引用在建立的時候必須被初始化,不能為null,之後引用對應的值可以改,但是物件就不能改了。

int i = 1;

int &k = i;

fun(&k);

四、記憶體管理

1、記憶體分配方式有三種:靜態儲存區,棧,堆(動態記憶體)。

靜態儲存區上的變數在程式執行週期內都存在,比如static,全域性變數。

堆上分配的記憶體也叫動態記憶體,new出來的,必須自己delete,防止記憶體洩露,delete會把指標變為野指標,所以必須delete p; p = null; 他的生存週期特別靈活,需要我們手動操作。

棧上分配的記憶體函式的區域性變數都在棧上分配記憶體,在函式執行結束的時候自動釋放,使用效率高,但分配記憶體容量有限。

2、指標

以指標作為引數的函式必須在函式口進行非空檢查,防止空指標if(p != null)

指標釋放後必須p = null,否則就是野指標。

3、定義陣列的時候盡量初始化,防止為被初始化就是用。

4、不要用指標傳遞動態記憶體,用函式返回值來傳遞。

char* get(int n)

char* str = null;

str = get(100);

5、野指標

free和delete釋放指標後,指標會變為野指標,所以一定要有null;

delete p;

p = null;

6、指標建立時要麼初始化,要麼null;

*p= &a;  或者  *p = null;

7、記憶體耗盡怎麼辦

a* a = new a();

if(a == null)

8、new陣列

obi* object = new obj[100];   //建立100個動態物件

delete object;  //釋放所有物件

9、字串

char* p = "hello";  //p指向常量字串,位於靜態儲存區,內容為:hello\0

p[0] = 'a';  //是非法的  ,但編譯器不會發現這個錯誤

char* a = "hello";

a[0] = 'w'  //合法

10、全域性函式在呼叫的時候要加::標示符

::fun();

選擇器用法規範

選擇器符號 在css中前面加 並填寫id名稱 在css中前面加.並填寫class名稱 在css中填寫元素與屬性,例如 title a href a href title img alt 在css中填寫id class 元素,再填寫偽類,列如 a hover 在css中填寫元素 在css中填寫id c...

遵循placement new的用法規範

widget p new widget ordinary new 普通的new pi new ptr int pi new ptr int placement new 括號裡的引數是乙個指標,它指向乙個記憶體緩衝器,placement new將在這個緩衝器上分配乙個物件。placement new的...

MySQL常見命令和語法規範

檢視當前所有的資料庫 show databases 開啟指定的庫 use 庫名 檢視當前庫下所有的表 show tables 檢視其他庫下所有的表 show tables from 庫名 建立乙個資料庫 create database 資料庫名 charset 字符集 刪除乙個資料庫 drop da...