在C語言中,有一個“流”的概念;流可以分為兩種類型:文本流(文件)和二進制流(文件);文本流是解釋性的,最長可達255個字符;二進制流是非解釋性的,一次處理一個字符。
2.在用C語言編程的時候,我們都是用#include指令包含類型為".h"的文件,那麼可以用該指令包含類型不為".h"的文件嗎?答案是:可以。我也是剛才看到這個的。
3.在C語言中,我們經常使用宏;那麼編程的時候,是使用宏更好,還是使用函數更好?一般來說,應該用宏去替換小的、可重復的代碼段,這樣可以使得程序得運行速度更快;當任務比較復雜,需要多行代碼才能實現時,或要求程序越小越好時,就應該使用函數。
4.串拷貝(strcpy)和內存拷貝(memcpy)有什麼不同?strcpy()函數只能拷貝字符串,而memcpy()函數可以拷貝任意類型的數據。在C語言中,可以用itoa()函數將整數轉換為字符串,用atoi()函數將字符串轉換為整數。
5.在指針運算中,我們要區分“空指針”和“void指針”:空指針的值是NULL,它並不指向任何對象;而void指針一般被稱為通用指針或泛指針,它指向某個對象,但該對象不屬於任何類型。
6.在什麼時候使用“空指針”?1)用空指針終止對遞歸數據結構的間接引用;2)用空指針作函數調用失敗時的返回值;3)用空指針作警戒值;在什麼時候使用void指針?當進行純粹的內存操作時,或者傳遞一個指向未定類型的指針時,可以使用void指針。
7.NULL總是被定義為0嗎?NULL不是被定義為0,就是被定義為(void*)0,這兩種值幾乎是相同的;NULL總是等於0嗎?如果指“與0比較的結果為相等”,那麼確實是等於0;如果指“其存儲方式和整型值0相同”,那麼答案是“不”,NULL並不必須被存為一個整型值0。
8.用指針作if語句的條件表達式意味著什麼?當把一個指針作為條件表達式時,所要判斷的條件實際上就是“該指針是否為一空指針”;兩個指針是不能相加的。
9.在C語言中,用void關鍵字說明的函數是沒有返回值的,並且也沒有必要加入return語句;在有些情況下,一個函數可能會引起嚴重的錯誤,並且要求立即退出該函數,這時就應該加入一個return語句,以跳過函數體內還未執行的代碼。
10.exit()和return有什麼不同?用exit()函數可以退出程序並將控制權返回給操作系統,而用return語句可以從一個函數中返回並將控制權返回給調用該函數的函數。
11.數組的下標總是從0開始嗎?是的;可以使用數組後面第一個元素的地址嗎?可以使用數組後面第一個元素的地址,但不可以查看該地址中的值。
12.array_name和&array_name有什麼不同?前者是指向數組中第一個元素的指針,後者是指向整個數組的指針。
13.為什麼應該使用標准庫函數而不使用自己編寫函數?標准庫函數有三點好處:准確性、高效性和可移植性。
14.什麼是“局部環境(local)”?局部環境是對特定環境下程序要遵循的特定規則的一種描述,它對程序的國際化很有幫助。