C語言面試題目匯總(持續更新)

來源:互聯網
上載者:User

標籤:記憶體位址   參數   編譯器   匯總   手動   空間   情況   沒有   回收機制   

1、堆疊溢位一般是由什麼原因導致的?

 這個問題感覺分開來討論比較好。

首先說棧溢出:

(1)我們都知道局部變數存在棧中,要是在局部變數中儲存了一個很大的數組,有可能導致棧溢出。

(2)還有就是函數的參數也是存在棧裡面,傳遞參數時盡量使用指標,要是一粗心將一個很大的數組作為參數傳入,就有可能導致棧溢出。

(3)函數的調用層次太深,最壞的情況是無限遞迴調用。函數遞迴調用時,系統要在棧中不斷儲存函數調用時的現場和變數,要是調用層次太深,也可能出現棧溢出。

再談談堆溢出:

C不像python這種進階語言,C沒有垃圾資源自動回收機制,堆也不像棧那樣,由編譯器自動分配和釋放,堆是手動分配釋放的。如果動態申請空間後不及時釋放,這種情況可能會導致堆溢出。

2、指標和引用的區別與聯絡?

int x = 20;

int &b = a;(等價於int * const b = &a)

相同點:

可以說引用相當於指標,引用和指標在編譯時間的方法一樣,指向的都是變數的記憶體位址。

不同點:

(1)引用儲存的是變數值,而指標是指向一個變數,儲存的是地址

(2)引用必須被初始化,也就是只能對已經存在的變數或對象實現引用,而指標不需要,指標可以為空白

(3)引用不需要分配單獨的記憶體空間,他是直接存取變數;指標是間接訪問,需要單獨分配記憶體空間。

 

C語言面試題目匯總(持續更新)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.