c語言深度解剖筆記

2021-07-22 15:25:42 字數 2441 閱讀 8348



關鍵字

register:這個關鍵字請求編譯器盡可能的將變數存在

cpu內部暫存器中而不是通過記憶體定址訪問以提高效率。注意是盡可能,不是絕對。你想想,乙個

cpu的暫存器也就那麼幾個或幾十個,你要是定義了很多很多

register

變數,它累死也可能不能全部把這些變數放入暫存器吧,輪也可能輪不到你。

必須為單一值,長度小於等於int,並且不能用&獲取

register

的位址(但是我自己在

dev上測試用了

register

仍然可以列印位址)

register int a;

static

static int j;

void fun1()

void fun2()

int main()

//i=10;j=1;

return 0; }

注意數字1和字母

l,注意

0和字母o;

sizeof()例子

sizeof 不是函式,計算物件所佔空間大小

memset(a,0,sizeof(a));

int b[100];

void fun(int b[100])

int main()

補碼-9 原碼

00001001

,反碼:取反,

11110110

補碼:反碼+1,

11110111;

switch (val)

對於if (a==0(其他常量

)) 的時候,為了避免寫成乙個

=而編譯不報錯,應該把常量寫在前面

if (0==a)

return ;可以理解為返回

return void;

const int *p;//=int const *p   即

p可變,

p指向的物件不可變

例子int a=10;

const int *p=&a;

*p = 20;  //此句會報錯因為不能更改

*p,去掉

coonst

才可以

a=20;//注意此句不會報錯

cout<

cout<<*p<

int * const p ; //p不能更改,但

p指向的值能更改

例子int a=10;

int *const p=&a;

p=null; //此句報錯,

p為常量,不能更改

*p = 20;  //此句可以

cout<

cout<<*p<

const修飾函式的引數表明這個引數不能被修改

const修飾函式返回值表示返回值不能被更改,

返回值也要相應的付給乙個常量或常指標。

(只有指標適用

),如果傳遞乙個值,即下面的例子返回值是int,那麼

const

沒有作用

int b[100];

int *p;

const int * fun()

int main()

volatile 關鍵字

volatile  int i;

int j=i;

int k=i;

表明i易變,那麼每次讀取

i都會從記憶體裡重新取

i 的值,否則(有的

)編譯器會自己優化,直接用上一次的i

struct 大小,預設預留乙個

byte

,同時還要考慮記憶體對齊

struct a;

struct b;

struct d;

int main()

列舉類enum col;

int main()

y=x/*p;

原本想表示x / (*p);但是編譯器會把

/*看成注釋的開始而報錯

花括號打包作用,與外界絕緣

char a[10]=;//ok

char b[10] ;//不可以

cout<

int main()

cout< }

用巨集定義表示式一定不能省略括號

int a[10];

cout《陣列首元素的位址

cout<<&a《陣列的首位址

列印的值是一樣的,

函式指標

char * (*fun1)(char x);  //函式指標

char * *fun2(char x);

// 返回值是

char **

的函式

char *fun3(char x); //返回值是

char *

的函式

char *fun(char *x)

int main()

C語言深度解剖 筆記4

1最易變的關鍵字 volatile 型別修飾符 用volatile修飾的變數表示可以被某些編譯器未知的因素更改,比如作業系統 硬體或者其他執行緒等。遇到這個關鍵字宣告的變數,編譯器對訪問該變數的 就不再進行優化,從而可以提供對特殊位址的穩定訪問。比如 volatile關鍵字告訴編譯器某變數是隨時可能...

c語言深度解剖筆記1

2016.8.14 dage 複習內容 c語言深度解剖筆記1 有三大類 算術運算子 關係運算子與邏輯運算子,還有位運算子等,相同優先順序運算子,從左至右依次運算。注意字尾運算優先順序高於字首。因此 i 應解釋為 i 基本表示式 1級 最高 字尾表示式 2極 單目 一元運算 3級 強制型別表示式 4級...

C語言深度解剖

1.關鍵字 是編譯器能認識的特殊字串符號。c語言共有32個關鍵字,含sizeof,計算物件所佔記憶體空間的大小。2.定義 建立乙個物件並分配一塊記憶體。3.宣告 告訴編譯器,名字已經匹配到了一塊空間,別的地方不能用它來作為變數名或物件名。宣告沒有分配記憶體,可以出現多次宣告。4.區域性變數 也叫自動...