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...