C 知識筆記

2021-10-04 06:04:39 字數 2053 閱讀 7263

c++ *&符號含義和關係

strlen與sizeof的區別

無符號數和有符號數比較

int

&int

::operator++(

)const

intint

::operator

(int

)

float型別:if((flag >= -0.000001) && (flag <= 0. 000001))其一般的兩種形式為:

class

boxbox obj1 = obj2;

//(注意此處與賦值的區別)

box obj2

(obj1);// 也行,呼叫複製建構函式

普通建構函式與複製建構函式的區別:

(1)形式上:

box

(int h,

int w,

int len)

;//普通建構函式的宣告,類名(形參表列)

box(box &b)

;//複製建構函式的宣告,類名(類名& 物件名)

(2)在建立物件時,實參型別不同。系統會根據實參的型別決定呼叫普通建構函式或複製建構函式。如:

box box1(12

,15,16

);//實參為整數,呼叫普通建構函式

box box2

(box1)

;//實參是物件名,呼叫複製建構函式

student stud1,stud2;

// 定義兩個同類的物件

stud2 = stud1;

// 將stud1賦給stud2

#include

using

namespace std;

intmain()

【↑**分析】

申明乙個int變數a,賦值為123;

通過&運算可以知道 a的位址為:0019ff3c

申明乙個int指標p,賦值為:0019ff3c, 也就是a的位址;

通過&運算可以知道p的位址為:0019ff38;

即在記憶體0019ff38儲存的資料是0019ff3c;

如果仔細觀察會發現p和a的位址是連續的,間隔為4,這與int是4個位元組的資料型別的事實相符合。

sizeof()是運算子,而不是乙個函式,在編譯時就計算好了,用於計算資料空間的位元組數。

int a[10]

;sizeof

(a);

// = 40 = 4*10

char ch=

'abc'

;sizeof

(ch)

;// = 4 = 3+1 (3)

傳遞給sizeof的一定是個變數,型別或者陣列名,當sizeof的是乙個變數或者型別, 則返回該變數和型別的大小。

對於字串string s;sizeof(string)sizeof(s)因編譯器而不同,但計算的不是字元個數。sizeof("***")是字元個數+1。想知道字串長度可以用s.size()或者s.length()

void

test

(string s)

intmain()

昨天師弟問個問題,以前沒怎麼注意過:

看下面**了沒~倒數第二行誒,j更大。為啥捏?因為.length()獲得的是unsigned型別,而 int j 是有符號數,在比較的時候會發生型別轉換。負數存成補碼,它轉化成無符號數去比較的時候是非常大的數。所以會出現j > p.length()

int

main()

參考:牛客網、技能樹

C語言相關知識筆記

一 gcnew與new的區別 c cli中使用gcnew關鍵字表示在託管堆上分配記憶體,並且為了和以前的指標區分,用 來替換 就語義上來說他們的區別大致如下 1.gcnew返回的是個控制代碼 handle 而new返回的是實際的記憶體位址.2.gcnew建立的物件由虛擬機器託管,而new建立的物件必...

C 知識點筆記

在全域性域中宣告的變數會自動初始化為0 如果變數是在區域性域中定義的,則系統不會向它提供回初始值0,這些物件被認為是未初始化,其值隨機 有的編譯器可能答會為你初始化為0,但千萬別依賴於這種可能行為,因為它會給你的程式帶來未定義的行為 區域性變數 在乙個函式內部定義的變數就是區域性變數。作用範圍 只侷...

C 初級知識學習筆記2

005 006 1 define巨集定義指令 定義帶引數的巨集被內聯函式取代。如 define max a,b a b a b 已過時 2 第36上講中的28分鐘所講的對多檔案操作方法掌握不太好!3 類宣告檔案 h 類實現檔案 cpp 類的使用檔案 main 所在的.cpp檔案 4 c 多檔案結構實...