C primer之第二章

2021-08-15 17:01:01 字數 1220 閱讀 5762

閱讀至2.5.2時,發現乙個不知道的知識點:

如果某個型別的別名指代的是復合型別或是常量,那麼它用到宣告語句裡面就會產生意想不到的後果,例如下面的宣告語句用到了型別pstring,它實際上是型別char*的別名:

typedef char* pstring;   1

const pstring cstr = 0; //cstr是指向char的常量指標

const pstring* ps; //ps是乙個指標,指向char的常量指標。

與 const char * cstr = 0;  2

區別:2是說定義了乙個指標cstr,而該指標指向的char物件是const型別,即指向常量的指標。

1是說定義了乙個指標cstr,該指標指向pstring型別,因為const與型別結合是:const與型別的順序沒有規定,可對比 const int i;  (i是個常量),所以const修飾的是cstr,又因為pstring是個指標型別,所有cstr是pstring型別(指向char)的常量指標,

關於auto

auto一般會忽略頂層const,而用const修飾的auto後,該物件的初始值便是const如2;

inti = 0, &r = i;

auto

a = r; 

//a 是int型別 1

const

intci = i, &cr = ci;

auto

b = ci;

// b is an int (top-level const in ci is dropped)

auto

c = cr;

// c is an int

auto

d = &i;

// d is an int*

auto

e = &ci;

// e is an int* 2

const

auto

f = ci;

//  f is a const int

auto

& g = ci;     

//  ci is const int

typeid:返回當前變數所屬型別的名。

decltype((variable))注意是雙層括號,這樣的結果永遠是引用,而得出了decltype(variable)當裡面的值是引用是,結果才是引用。

auto是通過初始值來推斷變數型別的,而decltype是從變數或者表示式來推斷型別的。

c primer第二章習題

習題2.1 int,long和short型別之間有什麼差別?答 short,int和long型別都表示整型值,儲存空間的大小不同.一般,short型別為半個機器字長,int型別為乙個機器字長,而long型別為乙個或兩個機器字長 在32位機器中int型別和long型別通常字長是相同的 用sizeof可...

C primer 第二章習題

習題 2.1 int long 和 short 型別之間有什麼差別?解答 它們的最小儲存空間不同,分別為 16 位 32 位和 16 位 對於16位機 一般而言,short 類 型為半個機器字 word 長,int 型別為乙個機器字長,而 long 型別為乙個或 兩個機器字長 在 32 位機器中,i...

C Primer學習 第二章

c 是一門靜態型別語言,在編譯時會作型別檢查。c 中初始化不是賦值。宣告和定義 extern關鍵字可以用來宣告變數名而不定義 extern宣告不是定義,也不分配儲存空間。extern int i int i extern double pi 3.1416 只有當extern宣告位於函式外部時,才可以...