zoukankan      html  css  js  c++  java
  • 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', ''};
    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.

  • 相关阅读:
    网站漏洞扫描工具Uniscan
    iOS 11开发教程(八)定制iOS11应用程序图标
    iOS 11开发教程(七)编写第一个iOS11代码Hello,World
    UDP转TCP隧道工具udptunnel
    iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面
    Web服务评估工具Nikto
    iOS 11开发教程(五)iOS11模拟器介绍二
    网络数据修改工具netsed
    iOS 11开发教程(四)iOS11模拟器介绍一
    兼容IE getElementsByClassName取标签
  • 原文地址:https://www.cnblogs.com/chendeqiang/p/12861714.html
Copyright © 2011-2022 走看看