Jung-Bin Wang things speak by themself

C99規格書初讀

偶然看到jservf老師的「你所不知道的 C 語言」系列講座,為我這個非科班出生的軟工給解惑了不少C語言方面的概念,其中印象最深刻的是”representation”這概念。

In C, everything is a representation (unsigned char[sizeof(TYPE)])

依據規範好的資料型態(資訊如何以bit的形式所表現),給定資訊所存的記憶體開頭位置以及所佔據的長度(幾個bytes),那麼資料就能被有效存取以及修改。

由於C語言只有傳值,所以呼叫函式時,應該傳遞資料所在的記憶體位置及型態資訊即可,而非資料本身的內容,但傳遞形式而非內容的作法,反過來要求程式撰寫者清楚知道自己在對記憶體做什麼處理。

除了資料可以儲存在記憶體中,函式本身也是作為資料被儲存在記憶體中被呼叫。caller呼叫callee時,也是把stack pointer指向記憶體中的函式所在的位置,也就是所謂的function pointer儲存值。

疫情期間,粗讀了ISO/IEC 9899, aka C99 standard,特別在語言與函式庫章節,對以往實作問題有了不少解惑,但還是有許多地方不是很了解,以後肯定需要偶而回去看看。