關於C語言的幾個細節

2021-08-25 15:18:13 字數 640 閱讀 1056

1sizeof不是函式,而是運算子。

2 編譯器解析的時候是忽略型別名的,const 離誰近就修飾誰。

const int *p; //p 可變,p 指向的物件不可變

intconst *p; // p 可變,p 指向的物件不可變

int *const p; // p 不可變,p 指向的物件可變

const int *const p; //指標p 和p 指向的物件都不可變

3 當你需要輸出的內容不包括變數或常量時適合使用puts(),而不用printf函式

4 volatile關鍵字是一種型別修飾符,用它宣告的型別變數表示可以被某些編譯器未知的因素更改,比如:作業系統、硬體或者其它執行緒等。遇到這個關鍵字宣告的變數,編譯器對訪問該變數的**就不再進行優化,從而可以提供對特殊位址的穩定訪問。使用該關鍵字的例子如下: int volatile nvint 當要求使用volatile 宣告的變數的值的時候,系統總是重新從它所在的記憶體讀取資料,即使它前面的指令剛剛從該處讀取過資料。

一般說來,volatile用在如下的幾個地方:中斷服務程式中修改的供其它程式檢測的變數需要加volatile;,多工環境下各任務間共享的標誌應該加volatile;,儲存器對映的硬體暫存器通常也要加volatile說明,因為每次對它的讀寫都可能由不同意義;

關於C語言的幾個細節

1 sizeof 不是函式,而是運算子。2 編譯器解析的時候是忽略型別名的,const 離誰近就修飾誰。const int p p 可變,p 指向的物件不可變 int const p p 可變,p 指向的物件不可變 int const p p 不可變,p 指向的物件可變 const int cons...

C語言細節

參考 注釋必須和 一起維護,不應該描述顯而易見的事,或把別的地方已說清楚的東西在說一遍。字面常量沒有語義,也沒有真正的記憶體位址。所以不可以取其位址,也不可以用於初始化普通引用,例如 long r1 40000 但是const long r1 40000 卻是合法的。所以,盡量不要使用字面常量,而應...

C語言細節

a b 先賦值再自增 a b先自增再賦值 float 6 4是1.500000 float 6 4 是1.000000 原始檔.c 目標程式.obj 執行程式.exe 都是二進位制檔案 源程式以ascii 形式存於文字檔案 c程式演算法可無輸入必須要有輸出 三種基本結構可以完成任何複雜的任務 大括號...