天天看點

C語言常見問題

        我最近看了一份文檔,叫做《C語言常見問題》,感覺裡面有很多知識很基礎,但就是容易弄錯!正所謂“不及跬步,無以緻千裡”,隻有打好了基礎才會有所突破。基礎是水,沒有它魚兒活不了;基礎是山,沒有它樹木長不了;基礎是雲,沒有它大雨下不了。

    從這份文檔中,我提取了比較重要的内容,在此與大家分享!

在C語言中,有一個“流”的概念;流可以分為兩種類型:文本流(檔案)和二進制流(檔案);文本流是解釋性的,最長可達255個字元;二進制流是非解釋性的,一次處理一個字元。

在用C語言程式設計的時候,我們都是用#include指令包含類型為".h"的檔案,那麼可以用該指令包含類型不為".h"的檔案嗎?答案是:可以。我也是剛才看到這個的。

在C語言中,我們經常使用宏;那麼程式設計的時候,是使用宏更好,還是使用函數更好?一般來說,應該用宏去替換小的、可重複的代碼段,這樣可以使得程式得運作速度更快;當任務比較複雜,需要多行代碼才能實作時,或要求程式越小越好時,就應該使用函數。

串拷貝(strcpy)和記憶體拷貝(memcpy)有什麼不同?strcpy()函數隻能拷貝字元串,而memcpy()函數可以拷貝任意類型的資料。在C語言中,可以用itoa()函數将整數轉換為字元串,用atoi()函數将字元串轉換為整數。

在指針運算中,我們要區分“空指針”和“void指針”:空指針的值是NULL,它并不指向任何對象;而void指針一般被稱為通用指針或泛指針,它指向某個對象,但該對象不屬于任何類型。

在什麼時候使用“空指針”?1)用空指針終止對遞歸資料結構的間接引用;2)用空指針作函數調用失敗時的傳回值;3)用空指針作警戒值;在什麼時候使用void指針?當進行純粹的記憶體操作時,或者傳遞一個指向未定類型的指針時,可以使用void指針。

NULL總是被定義為0嗎?NULL不是被定義為0,就是被定義為(void*)0,這兩種值幾乎是相同的;NULL總是等于0嗎?如果指“與0比較的結果為相等”,那麼确實是等于0;如果指“其存儲方式和整型值0相同”,那麼答案是“不”,NULL并不必須被存為一個整型值0。

用指針作if語句的條件表達式意味着什麼?當把一個指針作為條件表達式時,所要判斷的條件實際上就是“該指針是否為一空指針”;兩個指針是不能相加的。

在C語言中,用void關鍵字說明的函數是沒有傳回值的,并且也沒有必要加入return語句;在有些情況下,一個函數可能會引起嚴重的錯誤,并且要求立即退出該函數,這時就應該加入一個return語句,以跳過函數體内還未執行的代碼。

exit()和return有什麼不同?用exit()函數可以退出程式并将控制權傳回給作業系統,而用return語句可以從一個函數中傳回并将控制權傳回給調用該函數的函數。

數組的下标總是從0開始嗎?是的;可以使用數組後面第一個元素的位址嗎?可以使用數組後面第一個元素的位址,但不可以檢視該位址中的值。

array_name和&array_name有什麼不同?前者是指向數組中第一個元素的指針,後者是指向整個數組的指針。

為什麼應該使用标準庫函數而不使用自己編寫函數?标準庫函數有三點好處:準确性、高效性和可移植性。

什麼是“局部環境(local)”?局部環境是對特定環境下程式要遵循的特定規則的一種描述,它對程式的國際化很有幫助。 

C語言常見問題

繼續閱讀