
文章插圖
大家好,小跳來為大家解答以上的問題 。聲明和申明有什么區(qū)別和聯(lián)系,聲明和申明有什么區(qū)別這個(gè)很多人還不知道,現(xiàn)在讓我們一起來看看吧!
1、如果是指變量的聲明和定義:從編譯原理上來說 , 聲明是僅僅告訴編636f70793231313335323631343130323136353331333264656665譯器,有個(gè)某類型的變量會被使用,但是編譯器并不會為它分配任何內(nèi)存 。
2、而定義就是分配了內(nèi)存 。
3、對于下面的兩句代碼:void Func(){int a;int b=1;a=0;}對于第一行代碼,編譯器不會做任何事,它不會為它在棧中分配一點(diǎn)東西,直到第三句 , a=0;時(shí),編譯器才會將其壓入棧中 。
4、而對于int b=0;這一句,編譯器就會生成一條指令 , 為它賦值 。
5、如果反匯編,看到的代碼可能是這樣的:push 1;push 0;當(dāng)然,并不一定編譯器就會樣做,也有可能在聲明int a時(shí),編譯器就會把一個(gè)廢值入棧,到第三條再為其賦值,這要看編譯器的具體取舍,所以,聲明不一定不是定義 , 而定義一定是定義 。
6、但是,下面的聲明,一定僅僅是聲明:extern int a;這表時(shí),有一個(gè)int變量a , 它一定是在另外其他地方定義的,所以編譯器此時(shí)一定不會做什么分配內(nèi)存的事,因?yàn)樗褪锹暶鳎瑑H僅表明下面的代碼引用了一個(gè)符號,而這個(gè)符號是int類型的a而已 。
7、 如果是指函數(shù)的聲明和定義:聲明:一般在頭文件里,對編譯器說:這里我有一個(gè)函數(shù)叫function() 讓編譯器知道這個(gè)函數(shù)的存在 。
8、定義:一般在源文件里 , 具體就是函數(shù)的實(shí)現(xiàn)過程 寫明函數(shù)體 。
【聲明和申明有什么區(qū)別 聲明和申明有什么區(qū)別和聯(lián)系】本文到此分享完畢,希望對大家有所幫助 。
- 關(guān)于膊字的組詞 膊組詞和拼音
- 絲瓜可以和西紅柿一起吃嗎寶寶
- 司藤的法術(shù)為什么失靈
- 泰的拼音和組詞 泰的拼音和組詞組詞
- 帕羅西汀價(jià)格 帕羅西汀的功效和作用
- 舒克和貝塔主題曲歌詞列述 舒克和貝塔主題曲歌詞
- 什么被子又輕又暖和 什么被子又輕又暖和親膚
- 綠色發(fā)展有哪些含義和要求
- 肝癌的早期癥狀和前兆能治好嗎
- 入宅和搬家有什么區(qū)別
