c c 學習筆記 13

2022-02-22 02:43:20 字數 1684 閱讀 3071

演算法採用的是雜湊查詢方法(雜湊表),將輸入的名字轉化為乙個很小的非負整數,該整數隨後會將作為乙個指標陣列下標.陣列的每個元素指向某個鍊錶的表頭,鍊錶中的各個塊用於描述具有該雜湊值的名字.如果沒有名字雜湊到該值,則陣列元素的值為null.

雜湊函式能是乙個資料序列的訪問過程更加迅速有效,這樣能將資料元素更快的定位到.通常有以下幾種方法:1、直接定址法(h(key) = a + b * key);2、數字分析法;3、平方取中法;4、摺疊法;5、隨機數法;6、除留餘數法.具體的資訊可以參考維基百科.

c語言通過它來建立新的資料型別名,例如:typedef int length,則length與int型別完全相同.

從任何意義上講,typedef宣告並沒有建立乙個新型別,它只是為某個已經存在的型別增加了乙個新的名字而已.

實際上,它與#define還是比較相似的,但是由於typedef是由編譯器解釋的,因此它的文字替換功能超過預處理器的能力,例如:

typedef int (*pfi) (char *, char *)

以上語句定義了pfi是乙個指向函式的指標,該函式擁有2個char *型別引數,返回值為int.除了表達方式更加簡潔之外,還有2個原因:1、可以是程式引數化,提高程式的可移植性;2、為程式提供更好的說明性.如:

//

定義struct tnode *talloc(void

);typedef

struct tnode *treeptr

//改為

treeptr talloc(void)

聯合是可以(在不同時刻)儲存不同型別和長度的物件的變數,編譯器負責跟蹤物件的長度和對齊要求;以在單塊儲存區中管理不同的型別資料,而不需要在程式中嵌入任何同機器相關的資訊.它的語法基於結構,實際上,它就是乙個結構,如:

union u_tag

u;

變數u必須足夠大,以儲存3種型別中最大的一種.訪問成員的語法為:聯合名.成員或者聯合指標.成員.

文字流由一系列行組成,每一行的結尾是乙個換行符.如果系統沒有遵循這種模式,則標準庫會通過一些措施使系統適用這種模式.如將回車符和換頁符轉化為換行符,在輸出端進行反轉.

int getchar(void);

從標準輸入中一次獲取乙個字元,若檔案結尾,則返回eof.常量eof在標頭檔案,值為-1.

使用命令列prog

int putchar(int);

將字元c送至標準輸出上,預設情況下,標準輸出是螢幕顯示.如發生錯誤,則返回eof.

命令列prog >outfile,會將標準輸出重定向到outfile中.

printf函式的完整描述如下:

int printf(char *format, arg1, arg2,...)

格式字串包含兩種型別物件:普通字元和轉換說明.在輸出時,將普通字元原樣不動地複製到輸出流中,而轉換說明則並不直接輸出到輸出流中,而是用於控制printf中引數的轉換和列印.

轉換說明以%開始,乙個轉換字元結束,依次可能包含如下:

引數型別,輸出形式,如下:

int sprintf(char *string, char *format, arg1, arg2,...)

該函式與printf類似,但是它是將輸出儲存到乙個字串中,而不是輸出到標準輸出.

今天的學習就到此結束了,明天繼續,加油!

C C學習筆記

1.儲存型別 標準c語言為變數 常量 函式定義了4種儲存型別 extern,auto,static,register,它們分別用乙個關鍵字 儲存型別說明符 來說明。這4種儲存型別可分為兩種生存期限 永久的 即整個程式執行期間都存在 extern和static 和臨時的 即暫時儲存在堆疊和暫存器中 a...

C,C 學習筆記

1.求a的n次方 標頭檔案pow a,n a,n都為double 2.關於指標的一些小測試 includeusing namespace std int main int a 8 int m 3 cout 3.sort位於 algorithm 中,sort p,p n 預設公升序排列。4.inclu...

Effective C 學習筆記 (13)

由於在寫 時很多時候需要用到資源,比如new乙個物件之類的,這樣一來資源的申請和釋放需要程式設計師自己完成,對 的邏輯需要謹慎設計,才能保證資源不會洩漏。其實這類似的程式設計風格,在之前寫c的時候也有編碼規範來規定資源的釋放,比如do while的運用啊,goto exit0之類的方法,但是對於c ...