C 學習筆記

2021-09-14 03:42:06 字數 1824 閱讀 8211

c++學習

new delete

使用方法:

int *p =new int[10];

內聯函式

介於巨集函式和普通函式之間

巨集函式優點:**內嵌,避免了函式呼叫,不會壓棧和出棧。

巨集函式缺點:容易產生歧義,易使程式的text段體積過大,不會進行型別檢查。

普通函式優點:一段高度抽象的邏輯,避免重複,不易產生歧義,使text段體積變小,會型別檢查。

普通函式缺點:增加函式呼叫的壓棧出棧開銷。

內聯函式融合了兩者的優點。系統會自動判斷函式是否可以為inline,所以inline使對編譯器的乙個建議。一般函式在10行之內的情況下或頻繁呼叫情況下才會宣告為inline。

強轉使用方法

c語言的強轉

type a = (type)b;

c++強轉

static_cast 對隱式型別轉化的,可用此型別

reinterpret_cast 對於無隱式型別的轉化,static_cast 已經不可用

const_cast 脫常,只能用於指標和引用

dynamic_cast

例子:float a = 5.6;

int b =5;

b = static_casta;

a = static_castb;

void *p;

int q;

p=q;//正確

q=p;//錯誤

q = static_cast>§;//正確

int x =10;

int y = 3;

float z = x/y;//結果是3

float z = static_cast(x/y);//結果是3.333

char pc = static_cast>(malloc(100));//

char p; int q;

p =reinterpret_cast>(q);//正確

int p = (reinterpret_cast>)(reinterpret_cast(a) +1);//正確

intp = (int)((int)(a)+1);//錯誤

void fun2(int &v)

const int a =19;

int &ra = const_cast(a);

const結論:

我們可以改變const自定義類的成員變數,但對於內建資料型別,卻表現為未定義行為。

巨集在預處理的時候發生替換,const 在編譯階段發生替換

命名空間

用於大型專案開發

namespace 是對全域性命名空間的劃分

string 字串

屬於標準庫;

string不是關鍵字,是乙個類;

string封裝了乙個char型別,sizeof(string)=4;

string 型別不存在溢位;

初始化可以一下兩種格式

string str =「dsfasdfasdf」;

string str2(str);

string可以用』+『拼接;

str3 = str1+str2;

也可以用『』來判斷兩字串是否相等;

if(str1str2)

也可以用』<『或』>'判斷大小;

因為c++完全相容c語言,將字串拷貝到buffer裡面時,使用

strcpy(buffer,str.c_str());

c_str()函式將string型別轉變為c語言型別的char;

swap()函式交換string;

find(s,0)函式返回從0位置開始,第一次出現s的下標,找不到返回-1;

C 學習筆記( )

一 語法 迴圈 foreach 型別識別符號 in 表示式 code 用法 例子int temp foreach int num in temp 每次從temp取乙個元素賦給num直至取完 console.writeline n num 每行顯示乙個元素 執行結果 c 中唯讀 只寫控制 class ...

C 學習筆記

1.函式特徵 有函式頭和函式體 接受乙個引數 返回乙個值 需要乙個原型。2.c 命名規則 在名稱中只能使用字母字元 數字和下劃線 名稱的第乙個字元不能是數字 區分大寫字母和小寫字母 不能將c 關鍵字用作名稱 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給實現 編譯器及其使用的資源 使用,以乙個下劃...

c 學習筆記

屬性 屬性開頭字母大寫 屬性可以判斷輸入的非法值 屬性本身不儲存值 依靠字段 索引器 using system using system.collections.generic using system.linq using system.text namespace b try catch exc...