課堂問題 1110

進程虛擬地址空間(分配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);就可以了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章