C和指標 ch03 資料

2021-10-13 02:59:58 字數 2410 閱讀 3736

第三章貌似沒有作者給出的原始碼。

demo01.c即可。包含了後自行檢視即可。也可以直接去檢視中到底是怎樣定義的。

中的定義即可。

很實用啊,真正的見名知意。

warning警告。只要能放下也無所謂。否則,根據各個編譯器自己的規矩來,可能溢位,可能直接丟棄高階位,這些情況都是有可能的。

精度丟失。warning警告。對於整數,如果能裝得下,那就直接裝就行了。如果裝不下,這就取決編譯器是怎麼實現該情況的了。對於浮點數,需要檢視指數和尾數能否裝得下,否則依舊看編譯器是怎麼處理的。

enum change ;

不確定。列舉型別是拿整形來儲存的,但是這裡是%s格式化字串列印,則輸出是不確定的。如果是%d則輸出 32 48。

不允許。vs2019應該可以看,vscode還沒摸索這個問題。

適用於字元型別。顯示定義字元變數,保證一致性。

所能表示的數的範圍都是一樣的。只不過區別在於對於一半數是如何解釋的。

float作為浮點型範圍比int大。float長度 32 位,其中 1 位是符號位,8 位是冪,剩下的 23 位是尾數。如果位數相同,那麼它們能表示的不同值的數量應該也是相同的。但是由於浮點數系統中乙個數有多種表示方式。譬如,0 就有很多種表示方式,所以在表示不同值的數量上floatint少。

沒啥不同。顯示初始化就是將兩個合到一起罷了,在定義的時候隱式的插入了一條賦值語句而已。

左邊仍舊可以。右邊錯誤,不能該乙個常量賦值。

錯。若巢狀**塊中包含了同名變數,那麼外層同名變數將被隱藏。

錯。**塊中的區域性變數永遠不能從其它**塊中按名稱直接訪問。

錯。static延長所修飾變數的生命週期,更改其儲存類,但並不會更改其作用域。答案仍舊錯誤。

這就是全域性變數。不需要做任何操作。

extern int x;demo14.c、demo15.c

會。staticextern兩者就是矛盾的。static修飾本檔案內的變數,在函式中的是靜態變數。而extern表示的是其他檔案定義的變數,顯然兩者是矛盾的。且單單用static來宣告,卻想獲取其他檔案的全域性變數是不可能的。

可能相同。函式內自動變數在堆疊中用完即銷毀。第二次呼叫可能仍分配同樣位址造成結果相同。但是堆疊資訊被破壞時,這些變數的資訊也將被破壞。只是巧合而已。

demo20.c。個人覺得,static char b = 2;其鏈結屬性應該是internal。而不應該是none,畢竟要求xy都要能訪問到。

有乙個錯誤:第 6 行中c的宣告與函式引數c衝突編譯器將第 24 行標記為錯誤,稱其與中的宣告衝突第 20 行。這不應該是乙個錯誤,因為第 20 行中y的範圍在第 22 行用完了,因此不是衝突。

整形基本的資料型別僅有 4 種:整形、浮點型、指標和聚合型別(陣列、結構體等)。

字面值

列舉型別 指標

字串宣告及初始化

typedef的使用 常量

作用域

鏈結屬性

這個概念大多涉及多檔案編譯啥的。目前還是用的很少很少。

儲存型別

初始化

static關鍵字

作用域、儲存型別示例

鏈結屬性問題。三大鏈結屬性的應用。

一大堆的概念…鏈結屬性那塊,以前的知識盲區。

staticextern關鍵字的作用和用途。面試中瘋狂考。只不過,extern通常去考extern c去了。像多程式編譯,全域性變數宣告即鏈結屬性哪塊很少被問到。

C和指標 ch14 預處理器

c語言巨集用的很多很多,看看stdio.h等各種標頭檔案或者開源專案中的應用就懂了,各種巨集定義,坑點也是蠻多的,需要學習並注意。見名知意。方便修改 維護。考查 file 巨集及 line 的使用,以及引數轉字串的方法,引數前加 即可。見demo02.c。a.3 2 3 b.5 3 5 c.2 4 ...

C計畫 03 陣列指標 與 指標陣列

指標陣列 char p 2 for int i 0 i 2 i 根據c語言運算優先等級表,指標也是乙個變數,這裡的 char p 2 指的是定義了乙個一維陣列,陣列裡存放的是指標變數,而指標指向的則是後面字串的首個字元的位址。後面printf 中,列印字串只需要給出首個字元地位址即可。int tem...

c與指標 讀書筆記 03

邊界對齊 boundary alignment 在要求邊界對齊的機器上,整形值儲存的起始位置只能是某些特定的位元組,通常是2與4的倍數.硬體通過位址訪問記憶體位置 不能簡單的通過檢查乙個值的位來判斷它的型別 當兩個指標都指向同乙個陣列裡的元素時,才允許乙個指標減去另乙個指標,結果為兩個指標在記憶體中...