第1章C語言
1.1什么是局部程序塊(localblock)?
1.2可以把變量保存在局部程序塊中嗎?
1.3什么時候用一條switch語句比用多條if語句更好?
1.4switch語句必須包含default分支嗎?
1.5switch語句的最后一個分支可以不要break語句嗎?
1.6除了在for語句中之外,在哪些情況下還要使用逗號運算符?
1.7怎樣才能知道循環(huán)是否提前結(jié)束了?
1.8goto,longjmp()和setjmp()之間有什么區(qū)別?
1.9什么是左值(lvaule)?
1.10數(shù)組(array)可以是左值嗎?
1.11什么是右值(rvaule)?
1.12運算符的優(yōu)先級總能保證是"自左至右"或"自右至左"的順序嗎?
1.13十十var和var十十有什么區(qū)別?
1.14取模運算符(modulusoperator)"%"的作用是什么2
第2章 變量和數(shù)據(jù)存儲
2.1變量存儲在內(nèi)存(memory)中的什么地方?
2.2變量必須初始化嗎?
2.3什么是頁抖動(pagethrashing)?
2.4什么是const指針?
2.5什么時候應(yīng)該使用register修飾符?它真的有用嗎?
2.6什么時候應(yīng)該使用volatile修飾符?
2.7一個變量可以同時被說明為const和volatile嗎?
2.8什么時候應(yīng)該使用const修飾符?
2.9浮點數(shù)比較(floating-Pointcomparisons)的可靠性如何?
2.10怎樣判斷一個數(shù)字型變量可以容納的最大值?
2.11對不同類型的變量進行算術(shù)運算會有問題嗎?
2.12什么是運算符升級(operatorpromotion)?
2.13什么時候應(yīng)該使用類型強制轉(zhuǎn)換(typecast)?
2.14什么時候不應(yīng)該使用類型強制轉(zhuǎn)換(typecast)?
2.15可以在頭文件中說明或定義變量嗎?
2,16說明一個變量和定義一個變量有什么區(qū)別?
3.17可以在頭文件中說明static變量嗎?
2.18用const說明常量有什么好處?
第3章排序與查找
3.1哪一種排序方法最方便?
3.2哪一種排序方法最快?
3.3當(dāng)要排序的數(shù)據(jù)集因太大而無法全部裝入內(nèi)存時,應(yīng)怎樣排序?
3.4哪一種查找方法最方便?
3.5哪一種查找方法最快?
3.6什么是哈希查找?
3.7怎樣對鏈表進行排序?
3.8怎樣查找鏈表中的數(shù)據(jù)?
第4章數(shù)據(jù)文件
4.1當(dāng)errno為一個非零值時,是否有錯誤發(fā)生?
4.2什么是流(stream)?
4.3怎樣重定向一個標準流?
4.4怎樣恢復(fù)一個重定向了的標準流?
4.5stdout能被強制打印到非屏幕設(shè)備上嗎?
4.6文本模式(textmode)和二進制模式(binarymode)有什么區(qū)別?
4.7怎樣判斷是使用流函數(shù)還是使用低級函數(shù)?
4.8怎樣列出某個目錄下的文件?
4.9怎樣列出一個文件的日期和時間?
4.10怎樣對某個目錄下的文件名進行排序?
4.11怎樣判斷一個文件的屬性?
4.12怎樣查看PATH環(huán)境變量?
4.13怎樣打開一個同時能被其它程序修改的文件?
4.14怎樣確保只有你的程序能存取一個文件?
4.15怎樣防止其它程序修改你正在修改的那部分文件內(nèi)容?
4.16怎樣一次打開20個以上的文件?
4.17怎樣避開"Abort,Retry,Fail"消息?
4.18怎樣讀寫以逗號分界的文本?
第5章編譯預(yù)處理
5.1什么是宏(macro)?怎樣使用宏?
5.2 預(yù)處理程序(preprocessor)有什么作用?
5.3怎樣避免多次包含同一個頭文件?
5.4可以用#include指令包含類型名不是".h"的文件嗎?
5.5用#define指令說明常量有什么好處?
5.6用enum關(guān)鍵字說明常量有什么好處?
5.7與用#define指令說明常量相比,用enum關(guān)鍵字說明常量有什么好處?
5.8如何使部分程序在演示版中失效?
5.9什么時候應(yīng)該用宏代替函數(shù)?
5.10使用宏更好,還是使用函數(shù)更好?
5.11在程序中加入注釋的最好方法是什么?
5.12#include<file>和#include"file"有什么不同?
5.13你能指定在編譯時包含哪一個頭文件嗎?
5.14包含文件可以嵌套嗎?
5.15包含文件最多可以嵌套幾層?
5.16連接運算符"##"有什么作用?
5.17怎樣建立對類型敏感的宏?
5.18什么是標準預(yù)定義宏?
5.19怎樣才能使程序打印出發(fā)生錯誤的行號?
5.20怎樣才能使程序打印出發(fā)生錯誤的源文件名?
5.21怎樣判斷一個程序是用C編譯程序還是用C++編譯程序編譯的?
5.22預(yù)處理指令#pragma有什么作用?
5.23#line有什么作用?
5.24標準預(yù)定義宏_FILE_有什么作用?
5.25怎樣在程序中打印源文件名?
5.26標準預(yù)定義宏_LINE_有什么作用?
5.27怎樣在程序中打印源文件的當(dāng)前行號?
5.28標準預(yù)定義宏_DATE_和_TIME_有什么作用?
5.29怎樣在程序中打印編譯日期和時間?
5.30怎樣判斷一個程序是否遵循ANSIC標準?
5.31怎樣取消一個已定義的宏?
5.32怎樣檢查一個符號是否已被定義?
5.33C語言提供哪些常用的宏?
第6章字符串操作
6.1串拷貝(strcpy)和內(nèi)存拷貝(memcpy)有什么不同?它們適合于在哪種情況下
使用?
6.2怎樣刪去字符串尾部的空格?
6.3怎樣刪去字符串頭部的空格?
6.4怎樣使字符串右對齊?
6.5怎樣將字符串打印成指定長度?
6.6.怎樣拷貝字符串的一部分?
6.7怎樣將數(shù)字轉(zhuǎn)換為字符串?
6.8怎樣將字符串轉(zhuǎn)換為數(shù)字?
6.9怎樣打印字符串的一部分?
6.10怎樣判斷兩個字符串是否相同?
第7章指針和內(nèi)存分配
7.1什么是間接引用(indirection)?
7.2最多可以使用幾層指針?
7.3 什么是空指針?
7.4什么時候使用空指針?
7.5 什么是void指針?
7.6什么時候使用void指針?
7.7兩個指針可以相減嗎?為什么?
7.8把一個值加到一個指針上意味著什么?
7.9NULL總是被定義為o嗎?
7.10NULL總是等于0嗎?
7.11用指針作if語句的條件表達式意味著什么?
7.12兩個指針可以相加嗎?為什么?
7.13怎樣使用指向函數(shù)的指針?
7.14怎樣用指向函數(shù)的指針作函數(shù)的參數(shù)?
7.15數(shù)組的大小可以在程序運行時定義嗎?
7.16用malloc()函數(shù)更好還是用calloc()函數(shù)更好?
7.17怎樣說明一個大于64KB的數(shù)組?
7.18far和near之間有什么區(qū)別?
7.19什么時候使用far指針?
7.20什么是棧(stack)?
7.21什么是堆(heap)?
7.22兩次釋放一個指針會導(dǎo)致什么結(jié)果?
7.23NULL和NUL有什么不同?
7.24為什么不能給空指針賦值?什么是總線錯誤.內(nèi)存錯誤和內(nèi)存信息轉(zhuǎn)儲?
7.25怎樣確定一塊已分配的內(nèi)存的大小?
7,26free()函數(shù)是怎樣知道要釋放的內(nèi)存塊的大小的?
7.27可以對void指針進行算術(shù)運算嗎?
7.28怎樣打印一個地址?
第8章函數(shù)
8.1什么時候說明函數(shù)?
8.2為什么要說明函數(shù)原型?
8.3一個函數(shù)可以有多少個參數(shù)?
8.4什么是內(nèi)部函數(shù)?
8.5如果一個函數(shù)沒有返回值,是否需要加入return語句?
8.6怎樣把數(shù)組作為參數(shù)傳遞給函數(shù)?
8.7在程序退出main()函數(shù)之后,還有可能執(zhí)行一部分代碼嗎?
8.8用PASCAL修飾符說明的函數(shù)與普通C函數(shù)有什么不同?
8.9exit()和return有什么不同?
第9章數(shù)組
9.1數(shù)組的下標總是從0開始嗎?
9.2可以使用數(shù)組后面第一個元素的地址嗎?
9.3為什么要小心對待位于數(shù)組后面的那些元素的地址呢?
9.4在把數(shù)組作為參數(shù)傳遞給函數(shù)時,可以通過sizeof運算符告訴函數(shù)數(shù)組的
大小嗎?
9.5通過指針或帶下標的數(shù)組名都可以訪問數(shù)組中的元素,哪一種方式更好呢?
9.6可以把另外一個地址賦給一個數(shù)組名嗎?
9.7array_name和&array_name有什么不同?
9.8為什么用const說明的常量不能用來定義一個數(shù)組的初始大小?
9.9字符串和數(shù)組有什么不同?
第10章位(bit)和字節(jié)(byte)
10.1用什么方法存儲標志(flag)效率最高?
10,2什么是"位屏蔽(bitmasking)"?
10.3位域(bitfields)是可移植的嗎?
10.4移位和乘以2這兩種方式中哪一種更好?
10.5什么是高位字節(jié)(high-orderbyte)和低位字節(jié)(low-orderbyte)?
10.616位和32位的數(shù)是怎樣存儲的?
第11章調(diào)試
11.1如果我運行的程序掛起了,應(yīng)該怎么辦?
11.2如何檢測內(nèi)存漏洞(leak)?
11.3調(diào)試程序的最好方法是什么?
11.4怎樣調(diào)試TSR程序?
11.5怎樣獲得一個能報告條件失敗的程序?
第12章標準庫函數(shù)
12.1為什么應(yīng)該使用標準庫函數(shù)而不要自己編寫函數(shù)?
12.2為了定義我要使用的標準庫函數(shù),我需要使用哪些頭文件?
12.3怎樣編寫參數(shù)數(shù)目可變的函數(shù)?
12.4獨立(free-standing)環(huán)境和宿主(hosted)環(huán)境之間有什么區(qū)別?
12.5對字符串進行操作的標準庫函數(shù)有哪些?
12.6對內(nèi)存進行操作的標準庫函數(shù)有哪些?
12.7怎樣判斷一個字符是數(shù)字.字母或其它類別的符號?
12.8什么是"局部環(huán)境(locale)"?
12.9有沒有辦法從一個或多個函數(shù)中跳出2
12.10什么是信號(signal)?用信號能做什么2
12.11為什么變量名不能以下劃線開始?
12.12為什么編譯程序提供了兩個版本的malloc()函數(shù)?
12.13適用于整數(shù)和浮點數(shù)的數(shù)學(xué)函數(shù)分別有哪些?
12.14什么是多字節(jié)字符(multibytecharacters)?
12.15怎樣操作由多字節(jié)字符組成的字符串?
第13章時間和日期
13.1怎樣把日期存儲到單個數(shù)字中?有這方面的標準嗎?
13.2怎樣把時間存儲到單個數(shù)字中?有這方面的標準嗎?
13.3為什么定義了這么多不同的時間標準?
13.4存儲日期的最好方法是哪一種?
13.5存儲時間的最好方法是哪一種?
第14章系統(tǒng)調(diào)用
14.1怎樣檢查環(huán)境變量(environmentvariables)的值?
14.2怎樣在程序中調(diào)用DOS函數(shù)?
14.3怎樣在程序中調(diào)用BIOS函數(shù)?
14.4怎樣在程序中存取重要的DOS內(nèi)存位置?
14.5什么是BIOS?
14.6什么是中斷?
14.7使用ANSI函數(shù)和使用BIOS函數(shù),哪種方式更好?
14.8可以通過BIOS把顯示模式改為VGA圖形模式嗎?
14.9運算符的優(yōu)先級總能起作用嗎(從左至右,從右至左)?
14.10函數(shù)參數(shù)的類型必須在函數(shù)頭部或緊跟在其后說明嗎?為什么?
14.11程序應(yīng)該總是包含main()的一個原型嗎?
14.12main()應(yīng)該總是返回一個值嗎?
14.13可以通過BIOS控制鼠標嗎?
第15章可移植性
15.1編譯程序中的C++擴充功能可以用在C程序中嗎?
15.2C++和C有什么區(qū)別?
15.3在C程序中可以用"//"作注釋符嗎?
15.4char,short,int和long類型分別有多長?
15.5高位優(yōu)先(big-endian)與低位優(yōu)先(little-endian)的計算機有什么區(qū)別?
第16章ANSI/ISO標準
16.1運算符的優(yōu)先級總能起作用嗎?
16,2函數(shù)參數(shù)類型必須在函數(shù)參數(shù)表中或緊跟其后的部分中說明嗎?
16.3程序中必須包含main()的原型嗎?
16.4main()應(yīng)該總是返回一個值嗎?
第17章用戶界面--屏幕和鍵盤
17.1為什么直到程序結(jié)束時才看到屏幕輸出?
17.2怎樣在屏幕上定位光標?
17.3向屏幕上寫數(shù)據(jù)的最簡單的方法是什么?
17.4向屏幕上寫文本的最快的方法是什么?
17.5怎樣防止用戶用Ctr十Break鍵中止程序的運行?
17.6怎樣才能只得到一種特定類型的數(shù)據(jù),例如字符型數(shù)據(jù)?
17.7為什么有時不應(yīng)該用scanf()來接收數(shù)據(jù)?
17.8怎樣在程序中使用功能鍵和箭頭鍵?
17.9怎樣防止用戶向一個內(nèi)存區(qū)域中輸入過多的字符?
17.10怎樣用O補齊一個數(shù)字?
17.11怎樣才能打印出美元-美分值?
17.12怎樣按科學(xué)記數(shù)法打印數(shù)字?
17.13什么是ANSI驅(qū)動程序?
17.14怎樣通過ANSI驅(qū)動程序來清屏?
17.15怎樣通過ANSI驅(qū)動程序來存儲光標位置?
17.16怎樣通過ANSI驅(qū)動程序來恢復(fù)光標位置?
17.17怎樣通過ANSI驅(qū)動程序來改變屏幕顏色?
17.18怎樣通過ANSI驅(qū)動程序來寫帶有顏色的文本?
17.19怎樣通過ANSI驅(qū)動程序來移動光標?
第18章程序的編寫和編譯
18.1程序是應(yīng)該寫成一個源文件還是多個源文件?
18.2各種存儲模式之間有什么區(qū)別?
18.3最常使用的存儲模式有哪些?
18.4應(yīng)該使用哪種存儲模式?
18.5怎樣生成一個".COM"文件?
18.6".COM"文件有哪些地方優(yōu)于".EXE"文件?
18.7當(dāng)一個庫被連接到目標上時,庫中的所有函數(shù)是否都會被加到一個".EXE"
文件中?
18.8可以把多個庫函數(shù)包含在同一個源文件中嗎?
18.9為什么要建立一個庫?
18.10如果一個程序包含多個源文件,怎樣使它們都能正常工作?
18.11連接過程中出現(xiàn)"DGROUP:groupexceeds64K"消息是怎么回事?
18.12怎樣防止程序用盡內(nèi)存?
18.13如果程序太大而不能在DOS下運行,怎樣才能使它在DOS下運行呢?
18.14怎樣才能使DOS程序獲得超過640KB的可用內(nèi)存呢7
18.15近程型(near)和遠程型(far)的區(qū)別是什么?
第19章編程風(fēng)格和標準
19.1可以在變量名中使用下劃線嗎?
19.2可以用變量名來指示變量的數(shù)據(jù)類型嗎?
19.3使用注釋會影響程序的速度.大小或效率嗎?
19.4使用空白符會影響程序的速度.大小或效率嗎?
19.5什么是駱駝式命名法?
19.6較長的變量名會影響程序的速度.大小或效率嗎?
19.7給函數(shù)命名的正確方法是什么?
19.8使用大括號的正確方法是什么?
19.9一個變量名應(yīng)該使用多少個字母?ANSI標準允許有多少個有效字符?
19.10什么是匈牙利式命名法?應(yīng)該使用它嗎?
19.11什么是重復(fù)處理(iterativeprocessing)?
19.12什么是遞歸(recursion)?怎樣使用遞歸?
19.13在C語言中,表示真和假的最好方法是什么?
19,14空循環(huán)(nullloops)和無窮循環(huán)(infiniteloops)有什么區(qū)別?
19.15continue和break有什么區(qū)別?
第20章雜項(Miscellaneous)
20.1怎樣獲得命令行參數(shù)?
20.2程序總是可以使用命令行參數(shù)嗎?
20.3"異常處理(exceptionhandling)"和"結(jié)構(gòu)化異常處理(structuredexception
handling)"有什么區(qū)別?
20.4怎樣在DOS程序中建立一個延時器(delaytimer)?
20.5Kernighan和Ritchie是誰?
20.6怎樣產(chǎn)生隨機數(shù)?
20.7什么時候應(yīng)該使用32位編譯程序?
20.8怎樣中斷一個Windows程序?
20.9為什么要使用靜態(tài)變量?
20.10怎樣在一個程序后面運行另一個程序?
20.11怎樣在一個程序執(zhí)行期間運行另一個程序?
20.12怎樣把數(shù)據(jù)從一個程序傳給另一個程序?
20.13怎樣判斷正在運行的程序所在的目錄?
20.14怎樣找到程序中的重要文件(數(shù)據(jù)庫,配置文件,等等)?
20.15本書的有些例子程序有許多缺陷,為什么不把它們寫得更好?
20.16怎樣使用Ctr十Break失效?
20.17可以使熱啟動(Ctrl十Alt十Delete)失效嗎?
20.18怎樣判斷一個字符是否是一個字母?
20.19怎樣判斷一個字符是否是一個數(shù)字?
20.20怎樣把一個十六進制的值賦給一個變量?
20. 21怎樣把一個八進制的值賦給一個變量?
20. 22什么是二進制?
20. 23什么是八進制?
20. 24什么是十六進制?
20.25什么是換碼符(escapecharacters)?
第21章Windows
21.1可以在Windows程序中使用printf()嗎?
21.2怎樣在Windows程序中建立一個延時器?
21.3什么是句柄?
21.4怎樣中止一個Windows程序?
21.5什么是GDI?通過什么途徑使用它?
21.6為什么Windows.h很重要?
21.7什么是WindowsSDK?
21.8在編寫Windows程序時Microsoft的WindowsSDK是必需的嗎?
21.9Windows函數(shù)和標準DOS函數(shù)有什么區(qū)別?
21.10什么是動態(tài)連接?
21.11HANDLE,HWND和HDC之間有什么區(qū)別?
21.12Windows程序?qū)τ诓煌木幾g程序是兼容的嗎?
21.13Windows總是保存和刷新程序的窗口嗎?
21.14怎樣確定一個Windows程序的用戶區(qū)的大小?
21.15什么是OEM鍵碼?
21.16Windows程序需要考慮OEM鍵碼嗎?
21.17什么是虛擬鍵碼?
21.18什么是死鍵?
21.19插入標記(caret)和光標(cursor)有什么區(qū)別?
21.20在程序用戶區(qū)外撤擊鼠標能被捕獲到嗎?
21.21怎樣創(chuàng)建一個活動的位圖?
21.22怎樣在Windows程序中獲得日期和時間?
21.23怎樣在Windows程序中更新標題條(titlebar)?
21.24怎樣在Windows程序中獲得系統(tǒng)顏色?
21.25什么是系統(tǒng)顏色常量?
21.26怎樣創(chuàng)建自己的按鈕或控制(controls)?
21.27什么是靜態(tài)子窗口(staticchildwindows)?
21.28怎樣創(chuàng)建窗口子類(windowsubclassing)?
21.29什么是編輯類(editclass)?
21.30什么是列表框類(listboxclass)?
21.31Windows是怎樣組織內(nèi)存的?
21.32怎樣在Windows程序中分配內(nèi)存?
21.33模式(modal)對話框和非模式(modeless)對話框有什么區(qū)別?
索引
附錄標準庫函數(shù)的頭文件