Thinking in C 閱讀筆記(第三章)

2021-03-31 16:22:32 字數 2598 閱讀 2879

c++中的c

《建立函式》

函式原型

eg. int func(in,float,long z);   //long z will be warned !

int func( ) //無引數而不是任意引數

float func (...)//可變引數列表,避免(?)

返回值

1、每個函式都有返回值,空返回值為void

2、return的結果視返回值而定:

考慮:          

int func()

//----------------------------------

char func()

3、void不能使用return

int func()

//----------------------------------

char func()

3、void不能使用return

函式庫

使用方法:包含標頭檔案

《執行控制語句》: 我最先接觸的部分:)

//...略...//

注意:

1、可以隨時定義變數;

2、goto:

goto跳出多重迴圈,可讀性高;

當然把迴圈寫成函式再return也行,每層迴圈加條件也行;

遞迴:等寫演算法筆記時再寫

<運算子簡介》

運算子優先順序:查表吧!

自增自減

1、效率

++i //無臨時變數

i++ //臨時變數

2、運算順序

consider:

i=1;

y=i++ //y=1,i=2

or y=++i //y=2,i=2

請參考:http://***munity.csdn.***/expert/topic/3688/3688400.xml?temp=.260235

資料型別:內部型別、抽象型別(自定義的類)

基本內部型別:只規定儲存臨界值,二進位制及其轉換為數字;6e-4

bool:隱式轉換??

說明符:specifier

long / short 值上下限 float 4 double 8 long double 10

修飾int可以不寫int: long a 就是 long int a

signed / unsigned 是否使用符號位

由此可見,long short不可以修飾char,因為char只有一位,而signed unsigned不可

以修飾浮點

型別因為浮點型別總含有乙個符號。

指標:終於到你了! :)

* 和誰更親密?

定義乙個變數ptr來儲存位址,怎麼做到?

int* ptr=&a

我們實際上想要得是ptr=&a,但是沒有乙個基本內部型別可以讀取&a這樣的資料,所以

插入乙個*來表示指標,那麼*和誰結合更密切呢?

考慮兩種說法:

1、int* ptr //與型別更密切

2、int *ptr//與變數更密切

但是他們都有自己的難處:

1、int a,b,c可行,按照這種邏輯int* a,b,c也是可行的,但實際上我們不得不寫成

int* a;

int* b;

int * c;

2、 int *ptr=&a 這又好像在說 *ptr=&a,而這並不是我們所要的

eckel給我們了乙個新答案:*是插入的,和前後沒有親疏關係,只是乙個標誌告訴編譯器

:「 等一等,它是乙個指標。」

用途:修改外部物件;一些程式設計技巧

修改外部物件

為什麼可以修改?我們可以先看看定義並初始化乙個變數時發生的事情,這樣有助於理解值傳 遞和位址傳遞 。要記住三個名詞:名稱(訪問標識),值,記憶體位址。值儲存在記憶體位址中,而名稱只是訪問該位址從而獲得值的訪問標識,可以認為值和內

存位址結合更緊密,是一一對應的,而訪問標識則可以有多個,我們看個例子:

e.g : int a=23; //第乙個標識a 以及唯一值23

假設&a=4198736 //唯一位址,已經轉換為long型

int* ptr=&a; //第二個標識*ptr

為什麼第二個標識不是ptr呢?因為ptr的值是記憶體位址,把ptr做*運算就可以得到訪問內

存4198736的第二個標識了,它相當於第乙個標識a。所以從功能上講,

*ptr與a一樣 //兩個訪問標識

ptr與&a一樣 //這裡複雜一些,ptr實際上是乙個新的名稱,它對應另乙個的值

//、記憶體

void main()

//----------------------------------

char func()

3、void不能使用return

C 學習筆記 Thinking in C 四

1 運算子過載 1 class byte 2 12 3 關鍵字explicit c 提供了關鍵字explicit,可以阻止不應該允許的經過轉換建構函式進行的隱式轉換的發生。宣告為explicit的建構函式不能在隱式轉換中使用。顯示宣告 ce e 1 ce e2 e1 這種顯式呼叫外,其它都是非顯式的...

錯誤檢查 Thinking in C

為本書其餘部分改進錯誤檢查是很方便的。用內聯函式可以簡單地包括乙個檔案而不用擔 心連線什麼。到目前為止,assert 巨集已用於 錯誤檢查 但它真正用處是除錯並終將被能夠 在執行時提供更多有用資訊的東西代替。何況異常處理程式 在 1 7章介紹 已提供了更多的處 理這些錯誤的有效的方法。這是預處理器仍...

thinking in C 讀書日誌(二)

2007 08 01 第二章物件的建立與使用 第二章主要講述 c 的一些基礎知識和基本語法,不過我們仍能從書中學到新的東西。這次盡量減小文章的篇幅。主要分兩方面寫 1.推薦知識點,從廣度上覆蓋本章精華 2.對特定某個知識點的進一步研究 從深度上進行探索。1 直譯器與翻譯器 p28 初始學 c 的時候...