C 中基礎知識

2021-05-25 07:02:39 字數 4250 閱讀 2651

1、讀入未知數目的輸入

不知道具體有多少數值,只是要一直讀數直到程式輸入結束。使用的程式有:

while( std::cin >> value )

sum+=value;

2、寫有引數的函式時,首要工作,就是要對傳進來的所有引數進行合法性檢查。而對於傳出的引數也應該進行檢查,這個動作當然應該在函式的外部,也就是說,呼叫完乙個函式後,應該對其傳出的值進行檢查。

常用的檢查語句有:if{}else{};switch{}; 

3、檔案結束符

windows系統下通過鍵入【ctrl】+【z】鍵來輸入檔案結束符;

unix系統中,通常用【ctrl】+【d】鍵

4、c++算術型別

型別含義

最小儲存空間

取值範圍

備註bool

布林型-----

true

、false

char

(unsigned char)

(signed char)

字元型8

位0~255

(-128~127)

wchar_t

寬字元型16位

short

(unsigned short)

短整型16位

預設為帶符號

(無符號數)

int

(unsigned int) 整形

16位0~65535

預設為帶符號

(無符號數)

long

(unsigned long)

長整形32位

0~232

預設為帶符號數(無符號數)

float

單精度浮點型

32位,6

位有效數字

double

雙精度浮點型

64位,10

位有效數字

long double

擴充套件精度浮點型

96或128位,

10位有效數字

024八進位制數

0x14

十六進製制數

對於資料型別應注意的問題:

1)越界問題,通常是取值數目取模,然後取所得值;

2)對於unsigned型別來說,負數總是超出其取值範圍,unsigned型別的物件可能永遠不會儲存負數;

3)選擇型別前,要先了解程式的細節(是否越界,執行時效能代價)。

5、變數名

變數名,即變數的識別符號,可以由字母、數字和下劃線組成。變數名必須以字母或下劃線開頭,並且區分大小寫。

變數名得命名規則:

1)變數名不能與關鍵字重名;

2)不能與各種操作符的替代名重名;

3)不能包含兩個連續的下劃線,也不能以下劃線開頭後面緊跟著乙個大寫字母。

4)有些識別符號(在函式外定義的識別符號)不能以下劃線開頭。

較好的命名規範:

1)變數名一般用小寫字母;

2)識別符號應使用能幫助記憶的名字,能夠提示其再程式中的用法的名字;

3)包含多個詞的識別符號書寫為在每個詞之間新增乙個下劃線,或者每個內嵌的詞的第乙個字母都大寫;

4)在類中的資料成員,一般採用「d_變數名 」較好,類名一般用「c類名」等;

6、宣告和定義

1)變數的定義用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義;

2)宣告用於向程式表明變數的型別和名字。定義也是宣告:當定義變數時我們宣告了它的型別和名字。

3)使用extern關鍵字宣告變數名而不是定義它。

4)宣告不分配儲存空間,只有定義才分配;

5)宣告可以有多個,但是定義有且僅有乙個。

6)任何在多個檔案中使用的變數都需要有與定義分離的宣告,乙個檔案含有變數的定義,使用該變數的其他檔案則包含該變數的宣告(而不是定義:如全域性變數)。

7、const限定符

for迴圈的三個例子,說明在使用迴圈或者變數時,應該注意的地方。

1)for( int  index = 0 ; index != 512 ; ++index  )

2)int bufsize = 512 ;

for( int  index = 0 ; index != bufsize ; ++index  )

3) const int bufsize =512 ;

for( int  index = 0 ; index != bufsize; ++index  )

其中:方式1中,512的含義不明稱為魔數,而且在後期維護過程中非常麻煩,對512的修改必須在使用的地方全部修改到,才能保證程式不易出錯,維護的成本高;

方式2:使用bufsize代替512,則維護起來方便,只需要修改其定義就可以保證程式在其他地方使用該數也被修改,但不足的地方就是:在程式中可能不注意的時候會修改bufsize的值;

方式3:使用const將bufsize定義為字面值常量,這樣在程式的其他地方就不能修改改值,儲存很好的一致性。

定義const物件

1)const物件預設為檔案的區域性變數

在全域性作用域裡定義非const變數時,它在整個程式中可以訪問;

int counter;

extern int counter;

++counter;

與其他變數不同,除非特別說明,在全域性作用域宣告的const變數時定義該物件的檔案的區域性變數,此變數只存在於那個檔案中,不能被其他檔案訪問。

通過制定const變數為extern,就可以在整個程式中使用const物件。

extern int bufsize = fcn();

extern int bufsize ;

for( int  index = 0 ; index != bufsize ; ++index  )

【 註解 】 非const變數預設為extern。要使const變數能夠在其他檔案中訪問,必須顯示地指定它為extern。

8、引用

1)引用是一種復合型別,通過在變數名前新增「&」符號來定義。

2)每一種引用型別都「關聯到」某一其他型別。不能定義引用型別的引用,但可以定義任何其他型別的引用。

3)引用必須用該引用同型別的物件初始化。

4)引用是它繫結的物件的另乙個名字,作用在引用上的所有

操作事實上都是作用在該引用繫結的物件上。

5)引用在定義時必須初始化,初始化是指明引用指向哪個物件的唯一方法。

6)const引用(為唯讀,不能修改其引用,如不能修改refval,對refval賦值都是非法操作)

a)const引用可以繫結到const物件,也可以繫結到非const物件,使其值不被修改;

b)非const引用不能繫結到const物件上。

const int ival = 1032; 

const int &refval = ival ;  //ok,指向const物件的引用

int &ref2 = ival;  //error,非const引用,不能用來指向const物件。

9、typedef名字

使用typedef的目的

1)為了隱藏特定型別的實現,強調使用型別的目的;

2)簡化複雜的型別定義,使其更易理解;

3)允許乙個型別用於多個目的,每次使用使該型別的目的明確。

typedef使用的一些注意事項:

1)其為乙個已存在型別的別名,使人不容易知道實際的型別,造成理解的失誤。

2)將typedef宣告嵌入到類中,以避免影響全域性命名空間,並使它們更容易查詢到。

3)在定義複雜的函式引數時型別別名可以起作用。

10、列舉型別

列舉,不但定義了整數常量集,而且還把它們聚集成組。

列舉型別的特點

1)預設地,第乙個列舉成員賦值為0;後面的每個列舉成員賦的值比前面的大1;

2)可以為乙個或多個列舉成員提供初始值,但必須是常量表示式;

3)列舉成員值可以是不唯一的;

4)每個enum都定義了乙個新的型別,可以定義和初始化列舉型別的物件

5)列舉型別物件的初始化或賦值,只能通過其列舉成員或同一列舉型別的其他物件來進行。

eg enum points

points pt2d = point3d; //ok,point3d is a points enumerator(列舉成員)

points pt2w = 3;          //error

pt2w = polygon;          //error,polygon is not a points enumerator

pt2w = pt3d ;              // ok, both are objects of points enum type.

C 基礎知識

抽象類 abstract class 一種不可以被例項化的類。抽象類中一般含有抽象方法,當然也可有具體實現。繼承類只有實現過所有抽象類的抽象方法後才能被例項化。介面 inte ce 只含有共有抽象方法 public abstract method 的類。這些方法必須在子類中被實現。反射 程式集包含模...

c 基礎知識

或運算的意義是什麼 0 0 0 0 1 1 1 0 1 1 1 1 無進製與運算的意義是什麼 在vc中,視窗的每個屬性對應乙個只有一位為1的16位的二進位制數,當增加某屬性做或運算 即可,取消某個屬性只需與 上這個屬性的取反。cs.style ws maximizebox 和cs.style cs....

C 基礎知識

1 malloc和new區別與聯絡 a malloc malloc為函式,需要標頭檔案,申請的無型別,需要強制轉換 free釋放。示例 char p char malloc 10 sizeof char free p b new new是運算子,不需要標頭檔案,申請的是有型別的,自動呼叫建構函式 d...