1樓:
int a=5;int b=a;
這句不可能就警告;如果有,請給出你所使用的編譯器,以及警告資訊。
int c[a]; // 這句肯定是錯的。陣列的空間是在編譯期分配的,定義陣列的維數,必須是常量,不可以用變數做陣列的維數。
const 常量,實際上是沒有儲存空間的,而是用符號表來實現的。
static 在也是在編譯期建立的,儲存在靜態資料區。
2樓:匿名使用者
我開始學的時候也是,書上有些我想知道的都沒有。很多的參考書指教「形式」不講原理。。。
幫你補習一下吧:
首先c++屬於編譯型語言
編譯型就是編譯的時候直接編譯成機器語言,可以執行的程式。
80386處理器有3種工作模式:
實模式、保護模式和虛擬86模式。
保護模式是80386處理器的主要工作模式,windows作業系統就執行在此模式下。保護主要是指對儲存器的保護。
cpu在保護模式下支援虛擬儲存,即虛擬記憶體。它可以幫助作業系統將磁碟空間當作記憶體空間來使用。在磁碟上應用於這一機制的檔案被稱為頁檔案(paging file),它包含了對所有程序都有效的虛擬記憶體。
32位windows支援最大的4g記憶體。
windows將此空間的一半(4gb的前半部分,ox00000000~ox7fffffff)留給程序作為私有儲存,
自己使用另一半(後半部分,ox80000000~oxffffffff)來儲存作業系統內部使用的資料
核心物件是系統提供的使用者模式下**與核心模式下**進行互動的基本介面。(程式與windows內部通訊用的)
程式、程序、執行緒的區別:
程式是一連串靜態的指令,而程序是乙個容器。
執行緒負責執行該程序位址空間的**。
應用程式的啟動過程就是程序的建立過程,作業系統是通過呼叫createprocess函式來建立新的程序的。當乙個執行緒呼叫createprocess函式的時候,系統會建立乙個程序核心物件。此程序核心物件不是程序本身,僅僅是乙個系統用來管理這個程序的小的資料結構。
系統然後會為新的程序建立乙個虛擬位址空間,載入應用程式執行時所需要的**和資料。
系統接著會為新程序建立乙個主線程,這個主線程通過執行c/c++執行期啟動**開始執行,c/c++執行期啟動**又會呼叫main函式。如果系統能夠成功建立新的程序和程序的主線程,createprocess函式會返回true,否則返回false 。
//**********===以上就是從**到執行的全過程簡寫**********==
//這些都我筆記積累的,把你需要的記下,它將成為你最寶貴的財富
3樓:飛翔的菜菜
把你的整個程式貼出來看看,你這樣說根本看不出錯誤
c 中變數地址存放在變數名中,那變數名的地址在哪呢
這不是一言兩語可以說清的。你需要理解cpu指令 彙編 windows作業系統與c 編譯器的運作原理。對於int n 5 首先要說明n的地址更有可能是0x00410fc0,靠近頂端地址是存放核心資料的 編譯器編譯它時,產生類似mov 0x00410fc0 5的指令,其中並沒有出現n,n只是編譯時供編譯...
C 中怎麼建立標準的exe檔案
首先那台機子上要安裝相應版本的.net framework然後,c 裡面呼叫函式就可以了,可以用system filename.exe 這個標頭檔案就是stdlib.h,然後具體怎麼弄去查查吧 要去等本地的exe檔案的話可以用這三個函式,shellexecute createprocess wine...
c語言中如何使用檔案中的資料變數
使用fopen,fscanf函式可以實現從txt檔案當中讀取內容,進行簡單操作。1.fopen的函式原型 file fopen const char path,const char mode fopen函式的第乙個引數是檔案路徑,第二個引數是開啟方式,有以下幾種方式 r 以唯讀方式開啟檔案,該檔案必...