● 程序和C/C++
程序: 根据Wirth (1976), Algorithms + Data Structures = Programs.
Whence C: 1972, Dennis Ritchie[ˈritʃi](丹尼斯·里奇), 贝尔实验室(Bell Labs), C语言是他和Ken Thompson在设计Unix操作系统时创建的, Ritchie因此被称为C语言之父和Unix之父.
Whence C++: 1983-1985, Bjarne Stroustrup([ˈbjɑːnə ˈsdʁʌʊ̯ˀsdʁɔb]本贾尼·斯特劳斯特卢普), 贝尔实验室(Bell Labs), C++是C的扩展, 最初被称为带类的C(C with class). |
● 计算机系统的组成
● 信息存储单位 unit of storage
位(比特:bit,b,小写):度量数据的最小单位. 字节(Byte,B,大写):最常用的基本单位,1字节=8位 * 一个英文字母,无论大写和小写都是一个字符(character)=一个字节=8位。 一个汉字是一个字符=两个字节=16位。
K (千)字节(Kilobyte) 1K / 1KB / 1kB = 1024 Byte M(兆)字节(Megabyte) 1M = 1024 K G(吉) 字节(Gigabyte) 1G = 1024 M T(太)字节(Terabyte) 1T = 1024 G |
C/C++程序的编译过程 |
※ .cpp文件是文本文件(text file), .obj和.exe文件是二进制文件(binary file), lib是静态数据连接库文件 |
● C/C++程序结构
/*********************************** * 程序文件名: test.cpp * * 本程序功能: 显示Hello World * * 设计者: Abelhinho * * 时间: 12-25-2015 * ***********************************/ |
● main()函数的返回值
对于main()函数来讲,return后面的整数是告诉操作系统程序执行的结果,return 0程序正常结束;return -1(也可以是其它非0整数, 但一般是-1)表示程序结束时出错了. 大多数情况下main()函数的返回值我们是用不着的,但操作系统支持一个进程来获取别的进程的退出代码,这个时候这个返回值就有意义了。 例如,你在写一个自动安装程序,要依次安装多个应用程序,那么你怎么知道其中某个程序的安装是否正常结束了呢,因为如果某个出错了再继续也许是毫无意义的,你就可以通过别的进程的退出码来判断了。
※ 在 main()函数中,return (0)、exit(EXIT_SUCCESS) 和 exit(0) 基本上是等价的。 但是事实上 return 和直接调用 exit 的效果并不完全一样。一般情况下应使用 return() 来结束 main(),但如果 main() 中分配了内存,则应使用 exit() 结束. 一般来说,除非是多次分配或者系统的内存空间非常紧张,否则 main(),特别是短命程序如命令行工具的 main() 中分配的内存不应使用 free() 释放)。 |
● 输入Hello World!
#include <iostream> //头文件引用 using namespace std; //命名空间的引用; 如果写成<iostream.h>, 就不用写下面的 using namespace std; 不过, c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h, 虽然编译和运行都没问题 //另外, iostream是一个头文件,系统头文件不带.h后缀, 也就是说, 自定义的头文件要带.h后缀 int main() { cout<<"Hello World!"<<endl; //或者写成cout<<"Hello World! " return 0; } |
● C/C++符号 C/C++ tokens
C/C++ tokens are of six types. They are: 1. Keywords (eg: int, while), 2. Identifiers (eg: main, total—reserved or self-defined), 3. Constants (eg: 10, 20), 4. Strings (eg: "total", "hello"), 5. Special symbols (eg: (), {}), 6. Operators (eg: +, /,-,*) |
● C++的关键字表
C++的关键字表 |
||||||
asm |
const_cast |
explicit |
inline |
public |
struct |
typename |
auto |
continue |
export |
int |
register |
switch |
union |
bool |
default |
extern |
long |
reinterpret_cast |
template |
unsigned |
break |
delete |
false |
mutable |
return |
this |
using |
case |
do |
float |
namespace |
short |
throw |
virtual |
catch |
double |
for |
new |
signed |
true |
void |
char |
dynamic_cast |
friend |
operator |
sizeof |
try |
volatile |
class |
else |
goto |
private |
static |
typedef |
wchar_t |
const |
enum |
if |
protected |
static_cast |
typeid |
while |
● 自定义标识符(identifier)的要求
① 可以使用大小写字母, 下划线, 数字(其余的都不行,比如汉字、连字符hyphen、运算符+、-、/), 但第一个字符必须是字母或者下划线(underline/underscore), 不过应避免第一个字符是下划线"_"或双下划线"__", 因为一些语言内部名称或预定义宏也是用"_"或"__", 从而造成命名冲突. 另外注意: ② 字母区分大小写; ③ 变量名最好用英文,而且要有所含义, 即通过变量的名称就能猜测变量的意思' ④ C语言中变量的首字母一般是小写的 ⑤ linux、unix的风格都是小写字母,windows是小写大写结合; ⑥ 类名一般以大写C开头, 如CBook, CStudent |
● 匈牙利命名法(Hungarian notation)
※ 之所以叫做匈牙利命名法是为了纪念匈牙利籍的 Microsoft 程序员 Charles Simonyi. 基本原则是:变量名=属性+类型前缀+对象描述
属性(要用时在类型前缀前加): g_ 全局变量 c_ 常量 m_ c++类成员变量 s_ 静态变量
类型前缀: a 数组 p 指针 fn 函数 h 句柄 l 长整型 b 布尔 f 浮点型(有时也指文件) dw 双字 //一个字为2个字节, 16位, 简称WORD; 两个字为双字,4个字节, 32位, 简称DWORD, sz 以' |