C Unleased: From Knowledge to Mastery
by Richard Heathfield, Lawrence Kirby, et al.
SAMS Publishing 2000
Chapter 1
Page | Remark |
---|---|
4 | C |
quicksort | |
ANSI C | |
5 | Linux |
“there are many things you can do in C that most people seem to think you can’t do” | |
C Programming: A Modern Approach. by K. N. King (1996) 0-393-96945-2 | |
portability | |
algorithms | |
C++ | |
6 | types, operators, expressions, control flow, functions, syntax, pointers, |
arrays, structures, unions, stream i/o, strings, scope, visibility, | |
preprocessor, variable, addresses, NULL | |
dereference | |
strcpy | |
7 | void pointer |
8 | casts |
“I strongly recommend that you read it” | |
PC (Personal Computer) | |
9 | lingua franca, C |
10 | Windows |
Borland C++ | |
EBCDIC | |
DOS | |
UNIX | |
binary tree | |
LE/370 | |
Natural Language Processing | |
11 | Murphy’s Law |
12 | code quality |
CD (Compact Disc) | |
coding style | |
13 | Peter van der Linden |
debugging | |
memory management | |
simulations | |
recursion | |
linked list | |
stack | |
queue | |
deque | |
tries (trees) | |
sparse array | |
graph | |
library | |
matrices | |
polynomial interpolation | |
similtaneous equations | |
Digital Signal Processing (DSP) | |
Fast Fourier Transforms | |
expression parsing | |
Ian Kelly | |
ad-hoc | |
Mike Wright | |
genetic algororithms | |
Internet | |
CGI | |
Chad Dixon | |
porting (software) | |
13 | pi |
circumference | |
diameter | |
radius | |
decimal place | |
electronic trading | |
e-commerce | |
14 | floppy disk |
Stephen Wilms | |
embedded systems | |
C99 | |
GPL | |
source code | |
15 | encryption |
carriage return | |
newline | |
line feed | |
mainframe | |
MS-DOS | |
terminal emulator | |
16 | Usenet - comp.lang.c |
Usenet - moderation | |
newsgroup | |
17 | FAQ - Steve Summit - comp.lang.c |
newsgroup etiquitte | |
18 | HTML |
attachment | |
text-only clients | |
denizen |
Chapter 2
Page | Remark |
---|---|
22 | holy wars in computing culture |
revisiting code | |
23 | 1TBS |
Allman style bracing (BSD style) | |
The C Programming Language - Kernighan and Ritchie (K&R) | |
Eric Allman | |
24 | Whitesmiths C compiler bracing style |
GNU bracing style | |
Emacs | |
25 | block statement syntax to prevent bugs |
26 | whitespace |
indentation | |
27 | 2, 3, 4, 8 space indentation |
tabs and mainframes | |
Microsoft Visual C++ | |
whitespace around tokens | |
poor use of whitespace | |
28 | International Obfuscated C Coding Competition (IOCCC) |
IRC | |
whitespace around operators | |
29 | diff + “fixing” whitespace |
GNU indent | |
“Goto statement considered harmful” - Djikstra | |
goto | |
goto, abuse of | |
30 | “jump forward, not backward”, in reference to goto |
break | |
switch | |
continue | |
COBOL | |
fgets() | |
strchr() | |
31 | while(1) |
32 | for(;;) |
infinite loops | |
return | |
34 | QBasic |
“one return per function” rule | |
36 | initialization |
37 | memset() |
38 | static and global |
39 | double |
User Acceptance Testing | |
41 | “C is a lowercase language” |
intelligibility | |
42 | omitting vowels |
reserved names | |
44 | *chart of reserved names |
camelCasing | |
Hungarian notation | |
Charles Simonyi | |
45 | Windows 3.1 |
46 | naming variables |
naming constants | |
naming types | |
47 | naming macros |
naming functions | |
48 | writing useful comments |
49 | struct tm |
comment styles | |
50 | BCPL |
51 | when not to comment |
comment whta code does, not its mechanism | |
52 | comment complex code |
comment closing braces | |
53 | commenting using the preprocessor |
don’t comment out code | |
54 | void main() heresy |
56 | EXIT_SUCCESS |
EXIT_FAILURE | |
main(), number of arguments | |
57 | integer math vs. floating point math |
58 | signal handling |
volatile sig_atomic_t | |
abort() | |
signal() | |
passing by value | |
passing by reference | |
61 | problems with unions |
most significant byte | |
endianness | |
62 | sizeof operator |
63 | declarations, definitions, and prototypes |
65 | ones and twos complement |
undefined behavior | |
66 | flushing input buffers |
fflush() | |
scanf() | |
67 | ctypes.h |
is*() and to*() | |
EOF | |
UCHAR_MAX, LONG_MAX, INT_MAX, … | |
ASCII | |
69 | Cray |
70 | structure padding |
71 | macros |
72 | C vs. C++ |
73 | AmigaDOS |
MVS | |
macOS | |
EDCDIC |
Chapter 3
Page | Remark |
---|---|
Chapter 4
Page | Remark |
---|---|
Chapter 5
Page | Remark |
---|---|
Chapter 6
Page | Remark |
---|---|
Chapter 7
Page | Remark |
---|---|
Chapter 8
Page | Remark |
---|---|
Chapter 9
Page | Remark |
---|---|
Chapter 10
Page | Remark |
---|---|
Chapter 11
Page | Remark |
---|---|
Chapter 12
Page | Remark |
---|---|
Chapter 13
Page | Remark |
---|---|
Chapter 14
Page | Remark |
---|---|
Chapter 15
Page | Remark |
---|---|
Chapter 16
Page | Remark |
---|---|
Chapter 17
Page | Remark |
---|---|
Chapter 18
Page | Remark |
---|---|
Chapter 19
Page | Remark |
---|---|
Chapter 20
Page | Remark |
---|---|
Chapter 21
Page | Remark |
---|---|
Chapter 22
Page | Remark |
---|---|
Chapter 23
Page | Remark |
---|---|
Chapter 24
Page | Remark |
---|---|
Chapter 25
Page | Remark |
---|---|
Chapter 26
Page | Remark |
---|---|
Chapter 27
Page | Remark |
---|---|
Chapter 28
Page | Remark |
---|---|
Chapter 29
Page | Remark |
---|---|