C語言細節

2022-09-05 07:54:11 字數 684 閱讀 8149

1.c誰呼叫了main函式

linux執行乙個程式就是建立乙個新程序,然後把這個程式丟到這個程序中執行直到結束。linux通過./task執行程式,新程序作為命令程序的乙個子程序執行。main函式的返回值最終會返回給父程序。父程序的引數傳遞給子程序。

2.void型別的本質

void的意思是乙個變數還不知道型別,不確定型別。比如void a說明a一定有確定型別,只是還不知道a的具體型別。

void一般用於描述一段還未具體使用的記憶體。。

3.c語言中的null

c語言的null不是關鍵字,而是巨集定義,在c/c++標準中null是這樣定義的

#ifdef _cplusplus

#define null 0

#else

#define null (void *)0

#endif

在c語言中null本質是0,但是這個0並不是按數字解析,而是按0x00000000,代表0位址。(void *)0代表乙個指標,這個指標變數佔4個位元組,指向0位址開始的一段記憶體。

(一般判斷乙個變數是否為null 要寫成(null == p))

4.運算中的臨時變數

強制型別轉換分為四個步驟

在另乙個地方找乙個記憶體構建乙個臨時變數

將轉化的值儲存在臨時變數中

將臨時變數的值付給轉化後的變數

銷毀臨時變數

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程式演算法可無輸入必須要有輸出 三種基本結構可以完成任何複雜的任務 大括號...

C 語言細節總結

include intmain int int2 10 double double1 double double2 10 printf sizeof str1 d,sizeof str2 d r n sizeof str1 sizeof str2 printf sizeof int1 d,sizeo...