第三章 分析C語言的聲明
const int * grape;
int const * grape;
int * const grape;
最後一種情況指針是只讀的,上面兩種指針所指的對象是只讀的;
結構體可以用於段位,之前沒聽說過吧:
[cpp]
#include<stdio.h>
int main() {
struct bit_field{
unsigned int a :1;
unsigned int b :4;
unsigned int c :8;
};
struct bit_field temp;
temp.a = 1;
printf("%d\n",temp.a);
return 0;
}
如果一行代碼只做一件事,看上去會更簡單一些。基於這個理由,變量的聲明應該與類型的聲明分開;
有些C語言書籍聲稱“在調用函數時,參數按照從右到左的次序壓入堆棧裡”,這種說法過於簡單了——如果你有一本這樣的書,把那一頁撕下來燒掉。如果你有一個這樣的編譯器,把該編譯器源代碼的那幾行刪掉。參數在傳遞時首先盡可能地存放到寄存器中(追求速度);
聯合既有一些優點,也有一些缺點。它的確定就是哪些所謂的優點其實並不怎麼出色。聯合的優點就是它的外觀同結構一樣,只是用關鍵字union取代了關鍵字struct;
[cpp]
#include<stdio.h>
int main() {
enum sizes {small = 7, medium, large = 10, humungous};
printf("%d\n",small);
printf("%d\n",medium);
printf("%d\n",large);
printf("%d\n",humungous);
return 0;
}
枚舉的用法大致如上了;
宏大致有兩種,一種有參數,一種沒參數