0%

C++ 学习笔记

C++简介

C++是Bjarne Stroustrup与20世纪80年代开发的。
C语言的升级版*,为C语言增加了面向对象的功能。

  • 本帖只代表本人的看法

C++的注释

  • 可以使用 //
  • 多行可以使用 /**/

C++的基本构成

  1. 注释
  2. 预处理编译指令 #include
  3. 函数头 int main()
  4. 编译指令 using namespace std
  5. 函数体 {}
  6. 使用C++ 的cout工具显示消息的语句
  7. 结束main函数的 return语句

C++必须声明变量

C++基础

变量

  1. C++提倡使用有含义的变量名

    1. 名称中只能使用字母,数字,下划线
    2. 第一个字符不能是数字
    3. 区分大小写
    4. 不能使用C++关键字
    5. 两个下划线和大写字符保留给编译器及使用的资源,一个下划线用作全局标识符
  2. 整型

    包含10种类型(char, short, int, long, long long 及其有符号的相应的5种), 根据需求使用。

    数字后带有后缀一般都有其含义, L或l 代表是long,U或u代表为有符号类型

    数字前带有前缀的,0数字 代表是使用8进制, 0x数字的则代表16进制。

  3. 浮点数

  4. 运算符

    + - * // % 五种运算符

  5. 常量 const

    使用方法

    const type name = value

    name尽量使用头字母大写。或是有规律的写法

  6. 数组

    数组类型 + 数组名 + 数组中的元素个数构成数组

    int name[10]

    数组的初始化值使用大括号,并使用逗号来分隔各个元素

  7. 字符串

    C风格的字符串具有一种特殊的性质,以空字符结尾,空字符被写作\0;

    1. char
    2. string
      1. 头部添加 #include <string>
      2. 初始化 string name = {“xxxx”}; string name;
      3. 字符串合并 str1 + str2 str1 += str2
      4. 提取字符串元素 str1[1]
      5. strlen() 可以计算字符串的长度
      6. getline(cin, str) 读取一行与char不同
      7. cin.getline()和getline(cin, str)是两个方法
  8. 结构

    1. 声明 struct struct_name { 属性;属性;属性; }

    2. 创建结构变量 struct_name name;

    3. 赋值 name = {value,value,value};

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      #include <iostream>

      struct inflatable
      {
      char name[20];
      float volume;
      double price;
      };

      int main()
      {
      using namespace std;
      inflatable guest =
      {
      "Glorious Gloria",
      1.89,
      29.99
      };

      inflatable pal =
      {
      "Audacious Arthur",
      3.12,
      32.99
      };

      cout << "Expand your guest list with " << guest.name << " and " << pal.name << "!\n";
      cout << "Your can have both for " << guest.price + pal.price << "!" << endl;
      return 0;
      }
    4. C++ 不推荐使用外部变量 (在函数外声明的变量),但是推荐外部结构声明

    5. 结构可以作为函数的参数,也可以作为结果被返回

  9. 共用体

    1. 共用体是一种数据格式,它能够存储不同的数据类型。但只能同时存储其中的一种类型。
    2. union union_name{属性;属性;属性;}
  10. 枚举

    1. enum工具提供了另一种创建符号常量的方式。
    2. enum enum_name{value,value,value,…}
  11. 指针和自由存储空间

    1. 指针,一种变量,其存储的是值的地址。使用&就能查看变量的地址

    2. *运算符代表指针 例如 int * p_updates 代表 p_updates 为地址,调用时使用*p_updates 可以得到改地址处的值

    3. 实例

      1
      2
      3
      4
      5
      6
      7
      8
      9
      int updates = 6;
      int * p_updates;
      p_updates = &updates;
      cout << "Values: updates = " << updates;
      cout << ", *p_updates = " << *p_updates << endl;
      cout << "Address: &updates = " << &updates;
      cout << ", p_updates = " << p_updates << endl;
      *p_updates = *p_updates + 1;
      cout << "Now updates = " << updates << endl;
    4. 声明和初始化指针

      1. 类型 * p_name
      2. 一定要在对指针应用解除引用运算符(*)之前,将指针初始化为一个确定的,适当的地址。
      3. 使用new来分配内存 int * pn = new int;
      4. 使用delete释放内存 一定要配对地使用new 和 delete,否则会出现内存泄漏 delete p_name
      5. 使用new创建动态数组 int * psome = new int [10]; 释放内存的时候 delete [] psome ,使用new时,不带方括号时,释放时也不带方括号,带方括号的,释放时必须带方括号
        1. 不要使用delete来释放不是new分配的内存
        2. 不要使用delete释放同一个内存块两次
        3. 如果使用 new []为数组分配内存,则应使用delete []来释放
        4. 如果使用 new为一个实体分配内存,则应使用 delete来释放
        5. 对空指针应用 delete 是安全的
        6. 读取元素和使用数组一样使用[0]下标即可

循环

std::ios_base ios_base类封装了C++标准中的流输入输出中不依赖于读写的数据的类型的基本信息,如格式化信息、异常状态、事件回调函数等。
cout.setf(ios_base::boolalpha); 可以将布尔值,由数字转为true, false。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using namespace std;

int x;
cout << "The expression x = 100 has the value";
cout << (x = 100) << endl;
cout << "Now x = " << x << endl;
cout << "The expression x < 3 has the value ";
cout << (x < 3) << endl;
cout << "The expression x > 3 has the value ";
cout << (x > 3) << endl;
cout.setf(ios_base::boolalpha);
cout << "The expression x < 3 has the value ";
cout << (x < 3) << endl;
cout << "The expression x > 3 has the value ";
cout << (x > 3) << endl;
return 0;

  1. For
1
2
  for (expression; expression; expression)
statement