《高質量程式設計指南》C 題目

2022-03-06 06:53:41 字數 1225 閱讀 6992

今天晚上下了本《高質量程式設計指南》,據說那幾個題目 20個碩士裡面,得50分以上的還沒有超過一半。如果能得滿分,

林銳博士拜你為師。我就很感興趣的去做了一下,發現都很基本。我這個半路出家的人,居然也能做個80分。給了自己很大的信心,同時,

也覺得很多問題,還是平時很愛犯的錯誤。今天把我的錯誤貼出來和大家分享。

1. bool flag, float t 和 指標 char *p 如何 和 0 值進行比較。

bool :我的答案是 if (flag == 0) 0 分,標準答案 應該是 if (flag)。

float: 我的是 :

float t = 0.0;

if (fabs(t) <= flt_min)

只是我的答案,貌似要包含兩個標頭檔案。他的標準答案是這樣的:

const float delt = 0.00001

if (x >= -delt && x <= delt) 

只是這裡, flt_min 是不是限制的太強了,但是選擇delt 的大小是個難題。

char *p 的比較方法是 if (p == null)  這個和標準答案一樣。

只是,在老版本的編譯器上,null 不能保證轉換成指標.

這個題目,想了下,給自己 6分吧。

2. sizeof 計算下面的值。這個題目我全對(預設是win32 的機器).

char str = "hello"; 這個是陣列的初始化。sizeof 陣列,就是這個陣列占用的空間。

sizeof(str) = 6;

char *p = str;

sizeof(p) = 4; 在32 位機器上,這個是4. 指標的大小,一般是乙個word 的大小。

int n = 10;

sizeof(n) = 4;  一般也是乙個 word 的大小

void func(char p[100])   陣列預設是傳位址的,所以,這個函式實際上傳過來的是陣列的頭指標,而且是乙個拷貝。

這個拷貝是乙個普通的指標。是普通指標的大小。

void *p = malloc(100); sizeof (p) = 4 p 是普通指標,而非陣列指標。所以是普通指標的大小。乙個cpu 字。

做到這裡,給我的感覺是,題目雖然簡單,但是,也涉及c 的基本原理。

今天太遲了,要睡覺了。下次再續,把後面的題目再貼上來,給大家分享。

高質量C 程式設計指南 一

第 1 章 檔案結構 標頭檔案的作 用 早期的程式語言如 basic fortran 沒有標頭檔案的概念,c c 語言的初學者雖然會用使用標頭檔案,但常常不明其理。這裡對頭檔案的作用略作解釋 1 通過標頭檔案來呼叫庫功能。在很多場合,源 不便 或不准 向使用者公布,只要向使用者提供標頭檔案和二進位制...

《高質量C 程式設計指南》筆記

高質量 c 程式設計指南 是一本關於c 程式設計風格的指導 建議性的書,誕生已經有一年多了,初學c 閱讀此書,感覺甚好,收穫很大。這本書對初學者掌握好的編碼習慣有極大的幫助,對老手改進編碼方式也有好處。xml namespace prefix o ns urn schemas microsoft c...

高質量C C程式設計指南

1.如果引數是指標,且僅作輸入用,則應在型別前加const,以防止該指標在函式體內被意外修改 2.在函式體的 入口處 對引數的有效性進行檢查 在函式體的 出口處 對return語句的正確性和效率進行檢查 3.引用的一些規則如下 1 引用被建立的同時必須被初始化 指標則可以在任何時候被初始化 2 不能...