c語言中,資料型別分為基本資料型別、構造資料型別、指標型別和void型別4種型別。計算機的記憶體結構是以位元組為單位進行儲存分配的,每個位元組都用乙個實體地址來唯一標識,系統根據所定義的變數的資料型別為其分配相應的儲存空間。
對於32位機,字元型佔1個位元組,基本整型佔4個位元組,短整型佔2個位元組,長整型佔4個位元組,單精度浮點型佔4個位元組,雙精度浮點型佔8個位元組。而對16位機,基本整型佔2個位元組。
共用體與結構體類似,也是由多個資料型別構造而成,但在儲存結構上與結構體有著本質上的區別,不同之處在於共用體的各個成員共用一塊記憶體,也就是說在同一時間中只有乙個成員的值是有效的。
c語言規定,用動態儲存分配函式時返回void指標,用於指向乙個抽象的型別的資料,在將它賦給另乙個指標變數時要進行強制型別轉換來適合被賦值的變數的型別。使用完後,需要將動態申請的記憶體釋放掉,否則會造成記憶體洩漏。
字串常量是用一對雙括號括起來的字串行,系統在每個字串的末尾都加上乙個'\0'作為結束標誌,即n個字元的字串常量在記憶體中佔n+1個位元組的空間。
在c程式中,符號常量是用巨集定義來定義的,不能被賦值,也不能被改變。
通常符號常量名的命名規則是全部大寫,而且要見名知義,這與變數名的首寫字元一般小寫相區別。
變數的三要素是變數名、變數型別和變數值。
整型資料在記憶體中是以二進位制形式存放,以補碼形式表示的。
正數:原碼即補碼
負數:取絕對值;求絕對值的二進位制形式;將二進位制按位取反,再加上1,可得補碼。
字元a和a的ascii碼分別為97和65,相差32.
邏輯運算子:&& || !
位操作運算子:& | ~
自增、自減運算往往用在迴圈語句中來控制迴圈變數的增減。
常用的數學函式:
double sqrt(double x) 計算x的平方根
double pow(double x,double y)計算x的y次冪的值
int abs(int x)計算整數x的絕對值
double fabs(double x)計算x的絕對值
double exp(double x)計算e的x次冪的值
double log(double x)計算以e為底的x的對數值
double log10(double x)計算以10為底的x的對數值
double sin(double x)計算sin(x)的值
對邏輯表示式求解時,並非所有的邏輯運算子都被執行,只是在必須執行下乙個邏輯運算子才能求出表示式的解時才執行該運算子,這叫短路求值法。
條件運算子的運算優先順序低於關係運算子和算術運算子,但高於賦值符。條件運算子的結合方向為自右向左。
位運算應用口訣:清零取反要用與,某位置一可用或,若要取反和交換,輕輕鬆鬆用異或。
c語言中,除了單目運算子、賦值運算子和條件運算子是右結合性外,其它運算子都是左結合性。
計算機中的數學和現實生活中的數學不完全一樣,現實世界裡,數學中能成立的數學規律,在計算機中則有可能不成立。
在c語言中,基本資料型別的資料在不同的平台上實現時,都有相應的型別的最大值和最小值的限制,這些和平台相關的型別限制資訊存放在limits.h的標頭檔案中。
在編寫程式時要特別注意資料溢位的情況和不同型別自動轉換並運算的情況,防止程式出現難以查詢和難於理解的錯誤。
framebuffer 一些基本知識
horizontal回掃和vertical回掃是crt引入的概念,電子束從左向右畫水平線,回到下一行行首繼續下一行掃瞄,直到螢幕最下一行,然後回到螢幕上方繼續下一幀掃瞄。水平回掃 電子束從上一行尾移動到下一行起始點需要的時間 幀回掃 電子束從螢幕下方移動到螢幕上方所需的時間 crt的重新整理屏率是怎...
C 基本知識整理
1.全域性靜態變數 記憶體中位置 靜態儲存區,且程式執行期間一直存在。未經初始化的全域性靜態變數自動初始化為0。全域性靜態變數在宣告檔案之外是不可見的。2.區域性靜態變數 記憶體中位置 靜態儲存區。未初始化自動初始化為0。作用域為區域性作用域,但離開作用域後不會銷毀,仍然駐留在記憶體中,再次訪問時值...
C語言指標與陣列的一些基本知識
我還是乙個初學者,今天看了一天的書,總結了如下知識點。指標與陣列 int p p a p 1 指標 指標就是乙個位址,指標變數是存放位址的變數,指標變數的值就是指標p指向那個元素的位址。p a 把a的位址賦給指標變數p 指標變數p的值就是a的位址,p指向a printf d p 輸出指標變數p所指向...