《C和指標》第三章 資料

2021-06-22 04:02:21 字數 1348 閱讀 5256

1.c語言中有四種基本資料型別:整形、浮點型、指標和聚合型別(陣列、結構等)

2.整型家族包括字元型(至少8位)、短整型(至少16位)、整型(至少16位)和長整型(至少32位),她們都有有符號和無符號兩種版本。

3.列舉型別就是指她的值為符號常量而不是字面值型別,而符號名實際值都是整型值。如果某個符號沒有顯示的指定乙個值,那麼它就預設比前乙個符號名的值大1.

enum jar;則預設cup=0,pint=1,half=2

4.浮點數家族包括float、double和long double型別,浮點數字面值在預設狀態下都是double型別的。所有浮點型別至少能夠容納從1e-37~1e37之間的任何值。

5.指標可以實現諸如tree、list等高階資料結構,因而被應用廣泛,指標的值就是乙個記憶體位址

6.當乙個字串常量出現在乙個表示式中。表示式所使用的值就是這個字串常量的起始儲存位置,而不是字串本身,因此可以把字串常量賦值給乙個「指向字元的指標」。

7.除了char型,其他整型預設狀態下都是有符號的。

8.可以用const關鍵字來宣告常量

int  const  s;和const  int  s;都是把s宣告為乙個整數,它的值不可以被修改

int  const   *pi;表示const限制的是int,所以pi指標所指向的記憶體中的資料不能修改,但是指標的值可以修改;

int  * const  ;表示const限制的是int *,所以pi指標的值不能被修改,但是可以修改它所指向的整型的值。

總的來說涉及指標時,const限制的是他前面的部分

9.編譯器可以確認四種不同的作用域:**塊作用域、檔案作用域、原型作用域和函式作用域

**塊作用域是{}裡面的部分,任何在**塊開始位置宣告的識別符號都具有**塊作用域;如果有巢狀,且內外層有相同的識別符號,則記憶體**塊的識別符號可以遮蔽外層的識別符號

檔案作用域:任何在**塊外面宣告的識別符號都具有檔案作用域,包括函式宣告的函式名

原型作用域:是適用於函式原型中宣告的引數;

函式作用域只適用於語句標籤。(不太常用)

10.連線屬性有三種,external(外部)、internal(內部)和none(無)。

internal連線屬性的識別符號在同一原始檔中的所有宣告中都指同乙個實體

external連線屬性的識別符號不論宣告多少次、位於幾個原始檔都表示同一實體。

11.變數的儲存型別決定變數何時建立、何時銷毀以及它的值儲存多久,有三個地方儲存變數:普通記憶體、執行時的堆疊、硬體暫存器。

**塊內部宣告的變數預設儲存型別是自動的,又叫區域性變數,儲存於堆疊中,程式執行到宣告自動變數的**塊時,自動變數被建立。程式執行完**塊時,變數自行銷毀。

全域性變數在程式開始執行時建立,並在程式執行過程中始終存在

C和指標 第三章

一 看了半天,覺得最有價值的地方莫過於是資料的儲存和字元型別和指標之間的混沌關係 資料儲存 1.1棧區 編譯器在需要的時候分配,不需要的時候 一般變數的生命週期到外面的 為止 它的記憶體空間相對於堆來說,要小很多 比如申請int a 10000000000000 編譯器就會報錯 但是好在執行效率高,...

C和指標閱讀(第三章)

如果下標值是從那些已知是正確的值計算得來,那麼就無需檢查它的值。如果用作下標的值是根據某個方法從使用者輸入的資料產生而來的,那麼在使用它之前必須進行檢測,確保它們位於有效的範圍之內。在宣告指標變數時,可以為它指定初始值。個人感覺初始化賦值null即可 char message hello world...

第三章 資料和C

platinum.c include int main void 程式執行中無法改變改變的數字或字元稱為常量 如示例中12.121 在程式中隨著賦值,運算等操作而改變量值的稱為變數 如變數 weight value k r 關鍵字 c90標準新增關鍵字 c99標準新增關鍵字 intsigned bo...