C 學習之從C到C

2022-07-07 21:42:10 字數 2354 閱讀 2229

包含標頭檔案可以不加.h結尾,如iostream,一些常用的標頭檔案在引用時可以不加.h字尾,並在開頭增加c,如:

#include #include #include
在c中的強制型別轉換為:(int )3.5;

而在c++中的強制型別轉換為int(3.5),更加清晰直觀。

在 c++ 中,宣告乙個函式時,可以指定預設的輸入引數值。當呼叫有預設引數值的函式時,可以不寫出引數,這時就相當於以預設值作為引數呼叫該函式。

例如:

void function1(int x=20); 	 //函式的宣告中,指明引數 x 的預設值是 20

function1(); //正確的呼叫語句,等效於 function1(20);

不僅可以用常數,還可以用任何有定義的表示式作為引數的預設值。例如:

int max(int m, int n);

int a, b;

void function2(int x, int y=max(a,b), int z=a*b)

function2(4); //正確,等效於 function2(4, max(a,b), a*b);

function2(4, 9); //正確,等效於 function2(4,9 , a*b);

function2(4, 2, 3); //正確

function2(4, ,3); //錯誤!這樣的寫法不允許,省略的引數一定是最右邊連續的幾個

c++中增加函式引數的預設值,可以像上面的 function1 那樣寫在宣告函式的地方,也可以像 function2 那樣寫在定義函式的地方,但是不能在兩個地方都寫。

函式預設引數所帶來的好處是使程式的可擴充性更好,即當程式需要增加新功能時,改動可以盡可能少。

試想下面這種情況。乙個即將編寫完成的繪圖程式,其中有乙個畫圓的函式 circle,畫出來的圓都是黑色的,這時希望增加畫彩色圓的功能,於是就需要在 circle 函式中增加乙個 int 型的 color 引數,用來表示顏色。

但是原來的程式中可能大多數呼叫 circle 函式的地方依然只是畫個黑色的圓就可以了,只有少數幾個地方需要改成畫彩色的圓。此時,如果要找出所有呼叫 circle 函式的語句並補上顏色引數,會十分煩瑣。

而有了函式引數預設值的機制,則只需為 circle 函式的新引數指定預設值 0(假定 0 代表黑色),然後找出少數幾個呼叫 circle 函式畫彩色圓的地方,補上顏色引數即可。

實踐中這種情況 是經常發生的。

在 c++ 中可以定義「引用」。定義方式如下:

型別名 &引用名 = 同型別的某變數名;

此種寫法就定義了乙個某種型別的引用,並將其初始化為引用某個同型別的變數。「引用名」的命名規則和普通變數相同。例如:

int n;

int & r = n;

r 就是乙個引用,也可以說 r 的型別是 int &。第二條語句使得 r 引用了變數 n,也可以說 r 成為了 n 的引用。

某個變數的引用和這個變數是一回事,相當於該變數的乙個別名。

也可以用乙個引用去初始化另乙個引用,這樣兩個引用就引用同乙個變數。不能用常量初始化引用,也不能用表示式初始化引用(除非該表示式的返回值是某個變數的引用)。

總之,引用只能引用變數。

型別為 t& 的引用和型別為 t 的變數是完全相容的,可以互相賦值。

引用的示例程式如下:

#include using namespace std;

int main()

函式的返回值可以是引用。例如下面的程式:

#include using namespace std;

int n = 4;

int & setvalue()

int main()

setvalue 函式的返回值是乙個引用,是 int & 型別的。因此第 6 行使得其返回值成為變數 n 的引用。

第 10 行,setvalue 函式返回對 n 的引用,因此對 setvalue 函式的返回值進行賦值,就是對 n 進行賦值,結果就是使得 n 的值變為 40。

第 12 行,表示式 setvalue 函式的返回值是 n 的引用,因此可以用來初始化 r,其結果就 是 r 也成為 n 的引用。

以上只是c和c++不同的幾個點,其實還有很多不同的地方,如內聯函式、函式過載、動態分配記憶體和字串型別等等。c是面向過程的,而c++是物件導向的,物件導向的程式設計有以下4個特點:

總之,物件導向的程式設計方法繼承了結構化程式設計方法的優點,同時又比較有效地克服了結構化程式設計的弱點。

jlink使用技巧系列文章:

ansi c標準 c 學習之概述從C到C

c 的學習路線 c 同c的不同 三大性質 庫 抽象性 封裝性 繼承性 多型性 標準模板庫 物件導向程式設計 c 的i o是以位元組流的形式實現的,流 stream 實際上就是乙個位元組序列。命名空間 命名空間的使用 new delete是c 語言的運算子 malloc free是c 語言的標準庫函式...

C 學習筆記(五) 從C到C

主要內容 內聯函式 內聯函式與帶引數巨集區別 新的型別轉換運算子 一 內聯函式 inline int max int a,int b 二 內聯函式與帶引數巨集的區別 1.內聯函式呼叫時,要求實參和形參的型別一致 內聯函式會先對實參表示式進行求值,然後傳遞給形參 而巨集呼叫時只用實參簡單地替換形參 2...

從C語言到C (一)

1.輸入輸出流 using std cout 標準輸出流 using std endl 換行 cout em1.t a cout endl 2.結構體的宣告 在c 裡,不需要加struct 3.類的定義 類名稱前面加c,類成員前面加m 如果不加關鍵字public和 預設為 private 即如果你在...