當前位置:網站首頁>c語言進程(c的常見面試題與陷阱題)
c語言進程(c的常見面試題與陷阱題)
2022-01-28 01:22:28 【蘇某的橡皮擦】
面試題1.0
問:該試題的答案是什麼?並說出這個結果的原因。
答案:無限循環打印“ hehe ”。
這是很常見的一道面試題,考得不難且考點只有一個。就是關於數組越界。
1. 首先在內存中創建空間是從高地址到低地址的,這稱為壓棧。而在vs2019,vs2013等環境之下,壓棧創建的空間是隔開兩塊內存(int類型)的。
2.那麼當訪問的到a[12]的時候,a[12] = i = 0;即 i 重新被賦值為0。那麼將死循環打印hehe。
3.類似的在gcc環境下壓棧空出一塊內存(4個字節),vc6.0則沒有空
解决辦法:
最好的辦法就是不要寫出越界的代碼。其二就是先創建數組,再創建i,這樣數組從低到高循環就不會訪問到 i 所在的地址(debug版本下)。release版本下會自動被優化成先創建數組。
回答話術:原因局部變量在內存中創建是由高地址到地址值創建的,而數組的下標的增長在內存中是低到高增長的。
那麼i在內存中就會在數組的上方。如果i和arr數組中間留的空間合適的話那麼數組越界訪問就可能訪問到i。
那麼對i的賦值0就會導致數組進入死循環。
陷阱題1.0(sizeof算術轉換陷阱)
問:答案是什麼?為什麼?
答案: i > sizeof( i )
考點:算術轉換(在為int類型以上的變量進行運算時。低級類型將會轉換為高類型再進行運算)
解析:
由於sizeof的返回類型是size_t,他的本質是unsigned類型。而unsigned int 的級別比int級別要高。那麼當他們運算時就會進行算術轉換。-1 = 4294967295(32比特下的無符號)。sizeof(i) = sizeof(int) = 4。所以 i > sizeof( i )。
算術轉換等級:
以上是本章的全部內容,均是本人的一些淺薄見解
自己深知自我的知識儲備還比較有限
如有理解不恰當之處,望各比特指正
2021.11.28
版權聲明
本文為[蘇某的橡皮擦]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201280122282225.html
邊欄推薦
猜你喜歡
隨機推薦
- MySQL-5.7.36安裝遇到坑之後的整理,刻入骨髓的1045
- leader epoch
- Wireshark實驗四:UDP
- UiPath的許可查詢、激活、遷移和導出
- 遞歸以及for循環裏async 和 await 的用法
- 大人重疾險想保終身重疾,買哪個產品最合適啊?
- php使用openssl_encrypt和openssl_decrypt進行AES加密解密
- CV in Transformer學習筆記(持續更新)
- ctf,show msic入門
- 網絡文件系統
- 《滲透測試具體流程》
- flask入門教程(7) - 會話
- 【電子技術】什麼是循環冗餘碼CRC
- Anconda 學習
- 基於kubernetes的Prometheus監控mysql
- 什麼是光纖隔離器?
- LeetCode 7.整數反轉
- C 練習實例90
- @Inherit注解與注解的繼承
- 小程序雲開發——雲數據庫的增删查改(2)
- 五、OpenGL ES 三維圖形的初探
- 登錄令牌JWT — JSON WEB TOKEN
- 兩種方法,word文件轉換成PDF文件
- 有符號數(signed) 和 無符號數(unsigned)
- 道與術
- 少兒消費型重疾目前那個比較好一點?有沒有推薦的產品
- 猪器官又立功了!移植轉基因猪腎給腦死亡病人,23分鐘後成功產生尿液
- [機器學習算法面試題] 一.准確率Accuracy的局限性
- Flink(50):Flink之綜合練習(二)
- String類常用方法示例
- 各大直播平臺主播的收入計算方式是怎樣的?
- 工程師必須知道的幾個原則
- 細品事務機制(一)
- 邏輯樹分析方法:如何將複雜問題變簡單?
- 數組和鏈錶插入效率比較
- 李宏毅《機器學習》| 神經網絡訓練不起來怎麼辦(下)
- 2021年P氣瓶充裝考試及P氣瓶充裝試題及解析
- 2021年G2電站鍋爐司爐考試題庫及G2電站鍋爐司爐考試試卷
- jangow靶機滲透
- 『淺入淺出』MySQL 和 InnoDB