C++学习笔记

数据类型

基本数据类型

C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的 C++ 数据类型:

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型 wchar_t

使用numeric_limits可以查看数据类型的极限值:

cout << "unsigned int 最大值:" << (numeric_limits<unsigned int>::max)();  

typedef 声明

您可以使用 typedef 为一个已有的类型取一个新的名字。下面是使用 typedef 定义一个新类型的语法:

typedef int feet;

Byte和char

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; 
}

主函数

int main ()
{
  ...
}

匿名函数

匿名函数又叫Lambda 表达式,即无需声明直接调用的一块函数体.

[](int x, int y) -> int { int z = x + y; return z + x; }
[]      // 沒有定义任何变量。使用未定义变量会引发错误。
[x, &y] // x以传值方式传入(默认),y以引用方式传入。
[&]     // 任何被使用到的外部变量都隐式地以引用方式加以引用。
[=]     // 任何被使用到的外部变量都隐式地以传值方式加以引用。
[&, x]  // x显式地以传值方式加以引用。其余变量以引用方式加以引用。
[=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。

I/O

基础I/O操作

std::cout << "test";
int i;
std::cin >> i;

文件I/O

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

关键字

关键字 关键字 关键字 关键字
asm else new this
auto enum operator throw
bool explicit private true
break export protected try
case extern public typedef
catch false register typeid
char float reinterpret_cast typename
class for return union
const friend short unsigned
const_cast goto signed using
continue if sizeof virtual
default inline static void
delete int static_cast volatile
do long struct wchar_t
double mutable switch while
dynamic_cast namespace template

标准库

标准库信息请参考: http://www.purethought.cn/56653.html

多线程

TODO.

posted @ 2020-05-11 06:16  多弗朗强哥  阅读(54)  评论(0编辑  收藏