国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一道2016年nice的校招筆試題引發的思考

shixinzhang / 966人閱讀

摘要:注意點這個代碼是嚴格依賴環境的,例如中和是連續的,在編譯器中,和之間有一個空間。注意點當把與交換之后,程序將不會出現死循環,但是程序的越界訪問報錯是少不了的。注意點這種優化是無差別的,即無論你的代碼是否越界,都會進行這樣的優化。

目錄

聲明

原題

題目詳細解析

運行結果:

題目解析:

結論1:

注意點1:

注意點2:

?結論2:

?注意點3:

注意點4:

注意點5:


聲明

今天的題,并非是完全出自于nice的筆試原題,今天的這道題出自于《C陷阱和缺陷》,只是兩道題有異曲同工之妙!

原題

#include int main(){    int i = 0;    int arr[10] = { 0 };    for (i = 0; i <= 12; i++)    {        arr[i] = 0;        printf("hehe/n");    }    return 0;}

問題:這段代碼在vs2019上會出現什么現象?這種現象是由什么原因造成的?我們應該如何避免像這樣的問題?

題目詳細解析

運行結果:

出現了死循環,即在屏幕上不停的打印"hehe"。

題目解析:

(1)i和arr是局部變量,放在棧區上

(2)棧區上的使用習慣:先使用高地址處的空間,再使用低地址處的空間

(3)數組隨著下標的增長,地址是由低到高變化的

由這三點可以畫出這段程序的內存圖來,當然,這還要區分具體的編譯器!

結論1:

arr[12]與變量i占用的是同一塊空間,即地址值一樣?

如果arr和i之間的空間合適的話,就有可能使用的arr數組向后越界訪問到了i,造成循環變量i的改變,最終死循環。

注意點1:

這個代碼是嚴格依賴環境的,例如vc 6.0 中i和arr是連續的,在gcc編譯器中,i和arr之間有一個空間。

注意點2:

雖然此程序越界訪問了,但是由于程序進入了死循環,所以不會報錯,但是一旦把i<=12改成了i<=11,程序就會在i=11的地方會停止下來,此時已經構成了越界訪問,程序自然會報錯。如下圖所示:

?結論2:

死循環會掩蓋程序中的某些錯誤,比如數組越界訪問。

?注意點3:

當把int i = 0;與int arr[10] = {0};交換之后,程序將不會出現死循環,但是程序的越界訪問報錯是少不了的。

注意點4:

此時也應該注意一下debug與release版本的區別:

很明顯,在debug版本下,i的地址值比arr[9]的要大,而在release版本下,i的地址要比arr[9]的地址值要小,在release版本下進行了某些優化,即杜絕了我們上述出現的死循環的情況,在這種情況下,即使數組越界,也不會影響到i的值。

注意點5:

這種優化是無差別的,即無論你的代碼是否越界,都會進行這樣的優化。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/124782.html

相關文章

  • 2017校招總結(今日頭條、融360、鏈家)

    摘要:月初,那時候人還在百度北京實習,當時參加了騰訊網易的校招內推,結果有點呵呵。月份開始一直到月底,內推正式校招,前后三個月時間拿到今日頭條融鏈家網的測試開發崗位。 引言 本人武漢大學碩士研究生三年級在讀,90后。由于2017年6月要畢業,于是乎參加了2016年的秋招。8月初,那時候人還在百度(北京)實習,當時參加了騰訊、網易的校招(內推),結果有點呵呵。8月份開始一直到10月底,內推+正...

    fnngj 評論0 收藏0
  • 【回顧九月份第二周】 前端你該知道事兒

    摘要:順便一說,這首歌的原唱是秋田,中島當年嗓子壞了,才有這歌。中文是直接翻譯來的,作曲是秋田。一部電影春夏秋冬又一春春夏秋冬又一春是由金基德執導,金英民吳英秀金基德主演的一部韓國電影。年月日于韓國上映。 原鏈接: http://bluezhan.me/weekly/#/9-2 1、web前端 Angular vs. React vs. Vue: A 2017 comparison 9 S...

    sixgo 評論0 收藏0
  • 【回顧九月份第二周】 前端你該知道事兒

    摘要:順便一說,這首歌的原唱是秋田,中島當年嗓子壞了,才有這歌。中文是直接翻譯來的,作曲是秋田。一部電影春夏秋冬又一春春夏秋冬又一春是由金基德執導,金英民吳英秀金基德主演的一部韓國電影。年月日于韓國上映。 原鏈接: http://bluezhan.me/weekly/#/9-2 1、web前端 Angular vs. React vs. Vue: A 2017 comparison 9 S...

    levius 評論0 收藏0
  • 一道試題引發Promise筆記

    摘要:對象是一個返回值的代理,這個返回值在對象創建時未必已知。這使得異步方法可以像同步方法那樣返回值異步方法會返回一個包含了原返回值的對象來替代原返回值。 前言 近來參加校招筆試,發現有好幾道關于Promise的題目。然而我都沒有了解過。所以,這篇文章以網易筆試的一道題開始,記錄關于Promise的那些事。文章地址:http://lsxj615.com/2016/08/04... 筆試題 c...

    _Suqin 評論0 收藏0

發表評論

0條評論

shixinzhang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<