進程虛擬地址空間(分配4G)
高地址 1G分配給內核(內核:操作系統的核心)
3G給用戶空間: 棧空間: 局部變量 函數形參 自動變量 (先進後出) 系統管理
堆空間:malloc calloc ralloc 先進先出 用戶管理
全局數據區:bss :未初始化的全局變量
ordate:常量
靜態數據區:初始化的全局變量 static修飾變量
getchar時.程序就等着用戶按鍵.用戶輸入的字符被存放在鍵盤緩衝區中.直到用戶按回車爲止(回車字符也放在緩衝區中).getchar函數的返回值是用戶輸入的第一個字符的ASCII碼,如出錯返回-1,且將用戶輸入的字符回顯到屏幕.如用戶在按回車之前輸入了不止一個字符,其他字符會保留在鍵盤緩存區中,等待後續getchar調用讀取.也就是說,後續的getchar調用不會等待用戶按鍵,而直接讀取緩衝區中的字符,直到緩衝區中的字符讀完爲後,纔等待用戶按鍵. getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待用戶按回車,只要用戶按一個鍵,getch就立刻返回,getch返回值是用戶輸入的ASCII碼,出錯返回-1.輸入的字符不會回顯在屏幕上.getch函數常用於程序調試中,在調試時,在關鍵位置顯示有關的結果以待查看,然後用getch函數暫停程序運行,當按任意鍵後程序繼續運行.
C語言中的緩衝區又稱爲緩存,它是內存空間的一部分。 也就是說,在內存空間中預留了一定的存儲空間,這些存儲空間用來緩衝輸入或輸出的數據,這部分預留的空間就叫做緩衝區。 C語緩衝區分爲三種類型:1、全緩衝 2、行緩衝 3、不帶緩衝。 緩衝區根據其對應的是輸入設備還是輸出設備,分爲輸入緩衝區和輸出緩衝區。
清空緩存區用fflush(stdin);這句代碼。 鍵盤輸入的東西都是放在緩衝區的這款區域,有變量過來了就帶走,沒有變量就在那裏呆着等待一個變量來帶它走。但是這個時候緩衝區裏面偶爾會有一些垃圾的字符,而影響了正常的輸入,有的時候用getchar()帶走一個兩個的字符,但是如果還是不見效一句fflush(stdin);就可以了。