C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型:
类型关键字布尔型bool字符型char整型int浮点型float双浮点型double无类型void宽字符型wchar_t使用numeric_limits可以查看数据类型的极限值:
cout << "unsigned int 最大值:" << (numeric_limits<unsigned int>::max)();您可以使用 typedef 为一个已有的类型取一个新的名字。下面是使用 typedef 定义一个新类型的语法:
typedef int feet;char是用来表示一个字符,而不是一个字,因为一个字要占用两个字节。而存储一个ANSI字符只需一个字节。注意,强调是ANSI字符,而不是Unicode字符。因为Unicode要占用两个字节。(这个一定要注意看)如,"中文123"(占10字节)。
byte类型是最自由的一种。它就占用一个字节,但没有定义这个字节拿来干什么。Byte定义为一个Unsigned char类型。也就是无符号的一个字节。它将一个字节的8位全占用了。可以表示的数据范围是0到255之间。
C++ 提供了以下两种类型的字符串表示形式:
C 风格字符串C++ 引入的 string 类类型C 风格字符串
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; char greeting[] = "Hello";C++ String 类
string str1 = "Hello";更多 String 用法请参考: http://www.purethought.cn/5cf35ca9.html
什么是指针? 首先要理解 值(变量,常量,函数等) 是存储在内存中的,指针指向 值 的地址. 那么指针如何正确引用一个值呢,这就需要声明指针的类型,如 int 型指针,这就告诉指针,从指向的内存地址开始读取 int 大小的内存,就正确解析 值 了.
即,指针代表了变量的首地址,指针类型代表了有效范围.
#include <iostream> using namespace std; int main () { int var = 20; // 实际变量的声明 int *ip; // 指针变量的声明 ip = &var; // 在指针变量中存储 var 的地址 cout << "Value of var variable: "; cout << var << endl; // 输出在指针变量中存储的地址 cout << "Address stored in ip variable: "; cout << ip << endl; // 访问指针中地址的值 cout << "Value of *ip variable: "; cout << *ip << endl; return 0; } Value of var variable: 20 Address stored in ip variable: 0xbfc601ac Value of *ip variable: 20引用(&)又叫别名,即引用和原变量是同一个值的不同叫法(不同表示方法,类似typedef),当使用引用或原变量名更改值时,相应的原变量名或引用所代表的值也就变更了.
#include <iostream> using namespace std; int main () { // 声明简单的变量 int i; double d; // 声明引用变量 int& r = i; double& s = d; i = 5; cout << "Value of i : " << i << endl; cout << "Value of i reference : " << r << endl; d = 11.7; cout << "Value of d : " << d << endl; cout << "Value of d reference : " << s << endl; return 0; } Value of i : 5 Value of i reference : 5 Value of d : 11.7 Value of d reference : 11.7函数是一个可传参,可返回值的代码块.
函数由一个函数签名来表示: 返回值类型, 函数名, 参数类型
使用函数时,先声明函数,再调用函数.
#include <iostream> using namespace std; // 函数声明 int max(int num1, int num2); int main () { // 局部变量声明 int a = 100; int b = 200; int ret; // 调用函数来获取最大值 ret = max(a, b); cout << "Max value is : " << ret << endl; return 0; } // 函数返回两个数中较大的那个数 int max(int num1, int num2) { // 局部变量声明 int result; if (num1 > num2) result = num1; else result = num2; return result; }匿名函数又叫Lambda 表达式,即无需声明直接调用的一块函数体.
[](int x, int y) -> int { int z = x + y; return z + x; } [] // 沒有定义任何变量。使用未定义变量会引发错误。 [x, &y] // x以传值方式传入(默认),y以引用方式传入。 [&] // 任何被使用到的外部变量都隐式地以引用方式加以引用。 [=] // 任何被使用到的外部变量都隐式地以传值方式加以引用。 [&, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用。 [=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。ifstream类,它是从istream类派生的,用来支持从磁盘文件的输入。 ofstream类,它是从ostream类派生的,用来支持向磁盘文件的输出。 fstream类,它是从iostream类派生的,用来支持对磁盘文件的输入输出。
更多I/O信息请参考: http://www.purethought.cn/9653474a.html#toc-heading-10
为了更好的实现代码复用,C++支持面向对象的编程模式. 一个对象,也可以叫做自定义类型(区别于内置类型),其核心内容是被封装的字段(数据成员).
更多 面向对象编程 信息请参考: www.purethought.cn/7447.html
容器主要分为顺序容器和映射.
更多容器信息请参考: http://www.purethought.cn/c1522938.html
标准库信息请参考: http://www.purethought.cn/56653.html
TODO.