執行程式時,
記憶體會申請一片空間,
大概能劃分成三個區域:
區域性變數
函式形參
動態開闢的記憶體
如malloc,calloc
全域性變數
static修飾的變數
以下述**為例:
int add(int x, int y)
int main()
我們把棧區放大:
首先,棧區的底部分配一塊空間給main,
然後在main區域裡,從底到上,依次為區域性變數a,b,ret分配空間,如下圖:
第二步,我們要進行add函式的呼叫,需要傳參。
add(a,b)
在絕大部分編譯器裡,會先傳b,再傳a,從右向左傳。
在main函式區域上面,分配兩塊空間,分別給b`和a`。
實際上,
b`就是y,
a`就是x。
第三步,我們再分配一塊空間給add函式,
再底部分配一塊空間給z,
然後將x,y的結果相加,放進z裡。
C 銳利體驗 第十一講 陣列
第十一講 陣列 陣列 陣列是程式設計常用的一種資料結構。和c c 一樣,c 中的陣列索引從0開始,且其元素型別必須為相同,當然由於多型等帶來的隱式轉型則另當別論。c 中的陣列可以分為一維陣列,多維陣列以及參差陣列 ragged array 它們各自的宣告,初始化,以及元素索引都有不同語法規定。c 同...
C語言也能幹大事 第十一講 Socket網路程式設計
網路程式設計 計算機與計算機之間的通訊。網域名稱 ip位址 dns伺服器。手機聯絡人 號碼 乙個計算機可以同時執行多個網路程式,引入了埠port 與就是乙個計算機上可以併發執行多個網路程式,而不會再互相之間產生干擾 c s b s結構。p2p程式 即時客戶端,優勢伺服器端。tcp傳輸控制協議 udp...
C大事 第十一講 Socket網路程式設計
網路程式設計 計算機與計算機之間的通訊。網域名稱 ip位址 dns伺服器。手機聯絡人 號碼 乙個計算機可以同時執行多個網路程式,引入了埠port 與就是乙個計算機上可以併發執行多個網路程式,而不會再互相之間產生干擾 c s b s結構。p2p程式 即時客戶端,優勢伺服器端。tcp傳輸控制協議 udp...