1.型別安全:如果兩個型別直接要相互轉換,必須要顯示的轉換,不能偷偷摸摸的只用乙個等於號就隱式轉換了。
2.math.h中的abs的返回值正數負數都有可能,因為負數的範圍比正數大乙個,比如8位的二進位制,可以表示範圍為-128~127所以abs(-128)可能並不能表示為128。
3.先說巨集和函式的區別:
3.1. 巨集做的是簡單的字串替換(注意是字串的替換,不是其他型別引數的替換),而函式的引數的傳遞,引數是有資料型別的,可以是各種各樣的型別.
3.2. 巨集的引數替換是不經計算而直接處理的,而函式呼叫是將實參的值傳遞給形參,既然說是值,自然是計算得來的.
3.3. 巨集在編譯之前進行,即先用巨集體替換巨集名,然後再編譯的,而函式顯然是編譯之後,在執行時,才呼叫的.因此,巨集占用的是編譯的時間,而函式占用的是執行時的時間.
3.4. 巨集的引數是不佔記憶體空間的,因為只是做字串的替換,而函式呼叫時的引數傳遞則是具體變數之間的資訊傳遞,形參作為函式的區域性變數,顯然是占用記憶體的.
3.5. 函式的呼叫是需要付出一定的時空開銷的,因為系統在呼叫函式時,要保留現場,然後轉入被呼叫函式去執行,呼叫完,再返回主調函式,此時再恢復現場,這些操作,顯然在巨集中是沒有的.
4.內聯函式與巨集的區別:
4.1.內聯函式在執行時可除錯,而巨集定義不可以;
4.2.編譯器會對內聯函式的引數型別做安全檢查或自動型別轉換(同普通函式),而巨集定義則不會;
4.3.內聯函式可以訪問類的成員變數,巨集定義則不能;
4.4.在類中宣告同時定義的成員函式,自動轉化為內聯函式。
5.字串的兩種初始化,1 char[20] = "hello world"; char *str = "hello world";
6.rewind()函式,將檔案指標指向檔案開頭的位置。
7.乙個演算法有0個或多個輸入 有乙個或多個輸出。
8.若有以下定義和賦值語句,則與&s[i][j]等價的是
int
s[
2
][
3
] = , (*p)[
3
], i, j;
p = s;
i = j =
1
;
首先p是乙個指向有三個元素的陣列的指標,p = s,說明p指向s的第一行,*(p + 1)表示指向陣列的第二行第乙個元素,*(p + 1) + 1表示指向陣列第二行第二個元素,所以答案是*(p + i) + j。
9.char型別是無符號還是有符號取決於具體的實現,arm-linux-gcc 規定 char 為 unsigned charvc 編譯器、x86上的 gcc 規定 char 為 signed char預設情況下,編譯器預設資料為signed型別,但是char型別除外。
linux做題筆記
修改linux檔案許可權命令 chmod 檔案或目錄的訪問許可權分為唯讀 r 只寫 w 和可執行 x 三種。橫線代表空許可 ls l命令顯示檔案或者目錄的詳細資訊。rw r r 1 root root 483997 ju1 l5 17 3l sobsrc.tgz 第乙個 表示非目錄檔案,如果是 d ...
做題筆記3
一 將陣列a中的內容和陣列b中的內容進行交換。陣列一樣大 includeint main 迴圈遍歷,輸入陣列arr1,i作為陣列元素的個數。printf 請輸入5個數字的陣列arr2 for i 0 i 5 i 迴圈遍歷,輸入陣列arr2,i作為陣列元素的個數。for i 0 i 5 i 利用迴圈遍...
做題筆記 2019 9 29
1.printf函式的返回值為輸出內容的字元數目。2.不能被過載的運算子只有五個,分別是 一.成員訪問運算子 二.成員指標訪問運算子 三.域運算子 四.sizeof 長度運算子 五.條件運算子 前兩個運算子不能過載是為了保證訪問成員的功能不被改變 域運算子和sizeof運算子的運算物件是型別而不是變...