程序員面試寶典學習筆記01

2019年9月15日,開始了程序員求職路上的第一步--刷題+惡補基礎。各種原因導致我一直想要開始卻一直延後。現在開始不知道是不是晚了,但不試試一定是沒希望的。作爲一個學生,別的不敢說,學習能力絕對沒問題,拿出高考+考研的精神,還有什麼東西是我學不會的???

網上大家都推薦程序員面試寶典這本書,今天正好到貨(我的是第5版),準備一邊刷題一邊通讀C++Primer這本書一邊將自己所學記錄下來。

俗話說好記性不如爛筆頭,紙張會腐朽,計算機恆永久。

so,let's go !!

5.1 面試題1

爲什麼會有這種錯誤呢?程序的本意是想將main函數外部定義的變量i賦值給main函數裏面定義的變量i。

但編譯器編譯時是先從main函數開始的(記住這一點),int i= i;這句話是定義變量並初始化的語句,其執行順序是:

1.int i,首先定義一個整形變量,併爲其分配存儲空間。

2.執行變量初始化語句,這是個賦值語句,從左到右執行,將i 賦值給i。其本意是想將外面定義的全局變量(main函數外部定義的變量作用於整個函數週期稱爲全局變量,main函數內部定義的變量只能作用在main函數內部,出了main函數生命週期就結束了,我們稱之爲局部變量。)賦值給這個內部變量。但因爲main函數內部定義了一個同名變量,所以程序在編譯時不會向main函數外部去查找全局變量i,這就導致了我們在試圖將一個剛定義卻還沒有初始化的變量,去用來作爲一個值賦值給一個變量。所提纔有errorC4700:使用了未初始化的局部變量‘i’。

當然下面這樣做就是對的了。

另外,這裏還涉及到一個知識點,雖然這裏並未考察。

void main( ) 和int main()有什麼區別呢?

void    中文翻譯爲“無類型”。常用在程序編寫中對定義函數的參數類型、返回值、函數中指針類型進行聲明。

如果函數沒有返回值,那麼應聲明爲void類型,int聲明的函數,返回值必須爲int 型。所以題目的 void main()函數體內部沒有"return   ;"這種語句。

 

總結本題所學:

1.全局變量、局部變量的作用域和作用週期區別?

2. 定義並初始化一個變量,程序在編譯時是怎樣的執行的?

3.void 和 int 在聲明函數上的不同?

 

本來打算記錄所學時並沒有想這麼多,但將理解轉化爲語言使人能明白的過程中,逐漸發現了這並不容易,它需要很多知識點的支持,希望我以後也能這樣學習。不就題論題,發散思維,多思考爲什麼這樣,其他方式行麼。

希望我能堅持下去,也希望和我一樣的程序員小白們能從中受益。發現不對之處,請聯繫我,大家一起討論,好怕我會誤導大家。。。

以上,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章