第7章 習題

2021-08-09 01:49:31 字數 1305 閱讀 1385

7.1 在intel x86系統上,使用linux,如果執行乙個輸出 「hello, world」的程式但不呼叫exit 或 return,則程式的返回**為13(用shell檢查),解釋其原因。

「hello, world\n 」 共13個字元,而printf的返回值是輸出的字元個數,這個返回值是儲存在主函式的堆疊中的。當主函式的exit code處於未定義狀態時,則其exit code由堆疊和暫存器決定。

7.2 圖7-3 中的printf函式的結果何時才被真正輸出

當程序與終端進行i/o時,標準輸出使用行緩衝,行緩衝區遇到回車符才輸出。

7.3 是否有辦法不使用 引數傳遞 全域性變數 這兩種方法,將main中的引數argc argv傳遞給它所呼叫的函式。

將引數設定為環境變數。

7.4 在有些unix系統實現中執行時訪問不到其資料段的0單元,這是一種有意的安排,為什麼?

對空指標解引用dereference時,可以利用這種方式處理。

7.5 用c語言的typedef 為終止處理程式定義乙個新的資料型別exitfunc,使用該型別修改atexit的原型。

typedef int (*exitfunc) (void (*func) (void) )

7.6 如果用calloc分配乙個long型的陣列,陣列的初始值是否為0?如果用calloc分配乙個指標陣列,陣列的初始值是否為空指標?

7.7 在7.6節結尾處size命令的輸出結果中,為什麼沒有給出堆和棧的大小

7.8 為什麼7.7節中兩個檔案的大小(879 443 和 8378)不等於它們各自文字和資料大小的和?

因為.out檔案包含的不僅僅是資料和文字,還包括很多除錯資訊,symbol,section等。

7.9 為什麼7.7節中對於乙個簡單的程式,使用共享庫以後其可執行檔案的大小變化如此巨大?

使用靜態庫時,鏈結器將二進位制的庫檔案複製到原目標檔案中。

而使用共享庫時只是將函式呼叫表拷貝到原目標檔案中。

7.10 在7.10節中我們已經說明為什麼不能將乙個指標返回給乙個自動變數,下面的程式是否正確?

int

f1(int val)

return(*ptr + 1);

}

不正確,val的作用域位於if語句內,當if語句執行完成後,val就被釋放,而ptr依然執行

第7章 課後習題

函式模板 另一種是 類模板 是定義模板的關鍵字。或者typename 開始。或者函式引數的型別 個數不相同所進行的類似 操作。普通傳值引數的型別轉換機制。和關聯容器 三 選擇題 至少選乙個,可以多選 五 程式設計題 include include using namespace std templa...

第1章習題

1.證明 m times n 棋盤被多公尺諾骨牌完美覆蓋當且僅當 m 和 n 中至少有乙個是偶數。證明 m times n 棋盤被 t 個多公尺諾骨牌完全覆蓋,於是 mn 2t 則 2 mn 考慮到 2 是素數,因此 2 m 或 2 n 即 m 和 n 中至少有乙個是偶數,證畢。2.考慮 m 和 n...

趣學python第7章練習題

7.4 1月球體重,基礎函式 編寫乙個函式,把初始體重和每年增加的體重作為引數 coding utf 8 2018 2 1 author linda def weight moon weight,x for x1 in xrange 1,16 weight weight x y weight mon...