C語言筆記

2022-07-18 02:57:12 字數 1161 閱讀 7912

實用的指標用法

可以用指標做下面四個最基本的操作:

1、向os申請一塊記憶體,並且用指標處理它。這包括字串,和一些你從來沒見

過的東西,比如結構體。

2、通過指標向函式傳遞大塊的記憶體(比如很大的結構體),這樣不必把全部資料

都傳遞進去。

3、獲取函式的位址用於動態呼叫。

4、對一塊記憶體做複雜的搜尋,比如,轉換網路套接字中的位元組,或者解析檔案。

對於其他情況,應當盡量使用陣列,而將指標作為加速程式和優化的手段,原因在於現在訪問陣列或指標的語法都會翻譯為相同的機器碼,而且表現一致。

sizeof() 函式記錄的是所讀取變數或陣列結構體等所佔記憶體的大小,當讀取陣列時,會將『\0』計入長度;

strlen所作的僅僅是乙個計數器的工作,它從記憶體的某個位置(可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體區域)開始掃瞄,直到碰到第乙個字串結束符'\0'為止,然後返回計數器值(長度不包含'\0')。

strlen(char*)函式求的是字串的實際長度,它求得方法是從開始到遇到第乙個'\0',如果你只定義沒有給它賦初值,這個結果是不定的,它會從aa首位址一直找下去,直到遇到'\0'停止。

⒈sizeof操作符的結果型別是size_t,它在標頭檔案中typedef為unsigned int型別。

該型別保證能容納實現所建立的最大物件的位元組大小。

⒉sizeof是取位元組運算子(關鍵字),strlen是函式。

⒊sizeof可以用型別做引數,strlen只能用char*做引數,且必須是以'\0'結尾的。

⒋陣列做sizeof的引數不退化,傳遞給strlen就退化為指標了。

⒌大部分編譯程式 在編譯的時候就把sizeof計算過了是型別或是變數的長度。這就是sizeof(x)可以用來定義陣列維數的原因.

6.strlen的結果要在執行的時候才能計算出來,是用來計算字串的長度,不是型別佔記憶體的大小。

7.sizeof後如果是型別必須加括弧,如果是變數名可以不加括弧。這是因為sizeof是個操作符不是個函式。

⒏當適用了於乙個結構型別時或變數, sizeof 返回實際的大小,

當適用一靜態地空間陣列, sizeof 歸還全部陣列的尺寸。

sizeof 操作符不能返回動態地被分派了的陣列或外部的陣列的尺寸

⒐陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首位址,

C語言筆記(C )

結構體,類在定義時沒分配空間,用其定義變數時才會分配空間,所以c語言在的結構體不用有靜態型別,因為靜態型別在資料段,而如果在函式用用結構體定義變數,這變數在棧中,這樣就衝突了,但在c 中有相應的機制處理些問題。c 的cin.get 不讀取緩衝區中的回車字元,而cin.getline 將緩衝區中的回來...

C語言 C語言複習筆記

為什麼要學c語言?1972年,美國貝爾實驗室的 d.m.ritchie 在b語言的基礎上最終設計出了一種新的語言,他取了bcpl的第二個字母作為這種語言的名字,這就是c語言。總所周知,任何東西的盛行都只是乙個階段,語言也是如此。但是,c語言是個例外,乙個矗立了半個世紀的語言,其中好壞,我想應該不難了...

C語言筆記

1.換行問題導致與預期效果會不一樣 2.與 的錯誤,成功用 0來表示 3.編譯器分解符號按照從左到右分解 利用貪心演算法4.這樣也可以輸出。5.ga 與 ga 區別 ga 編譯器的處理會不一樣,vc 是後乙個覆蓋前乙個,從左向右 6.int p,a p的值為int,a的值為int,所以p為int指標...