C++ : 基础系列(数据类型,数据结构)

1: 数据类型 

   C++ 规定在创建一个变量或者常量的时候,必须指定出相应的数据类型,否则无法给该变量分配内存空间。

2: 数据类型范围:

2.1 整型 :

整型变量表示的是整数类型的数据。C++中能够表示整型的类型有以下几种方式(区别在于占用的内存空间不同),我们可以通过 sizeof关键字来统计数据类型所占空间的大小

C++ : 基础系列(数据类型,数据结构)_第1张图片

 2.2  实型(浮点型)

浮点型用来表示小数,浮点型分为两种: 单精度float 和 双精度 double,  两者的区别在于有效数字的表示范围不一样

 2.3  字符型

  字符型类型 用于显示 单个字符。

char str = 'a'  

显示字符型变量时用单引号括起来,不是双引号。单引号内只能有一个字符,不可以是字符串。

1 :在 C和C++ 中,字符型变量只占 1 字节。

2 :字符型变量并不是把所有的字符本身 存储在内存中,而是将 对应的 ASCII 编码 放到内存存储单元中。

2.4 : 字符串

   字符串类型 :用来表示 一串字符,它有两种表示风格

  第一种 : C风格字符串,需要用 双引号括起来

    char  string[] = "hello world C++";

   第二种:需要加入 头文件 #include

   string str = "hello world C++"

2.5 : 布尔型bool 

   布尔类型数据代表 真或假的值

  true  ------真 (1)

  false ------假 (0)

 bool类型只占一个字节

// ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//  第二章 :数据类型
// C++ 内置的整型包括: unsigned long,  long, unsigned int,int, unsigned short, short, char,unsigned char,signed char, bool
// C++ 复合类型:类  数组  结构(存储多个不用类型的值)

// C++标准库函数
#include 
#include 


using namespace std;
struct Person
{
    char personName;
    int peisonAge;
};

int main()
{
    // 1: 使用 const 限定符表示常量  (MONTH = MONTH + 1 错误的语法)
    const int MONTH = 12;
    cout << "指定了一个常量month: " << MONTH;

    // 1.1  char类型字符
    std::cout << std::endl;
    char c = '1';
    char c2 = 'a';
    cout << "字符初始化: " << c << endl;
    cout << "字符初始化c2: " << c2 << endl;

    // 2: 数组声明
    int number[] = {1, 2, 2};
    int number2[2] = { 3,4 };

    // 3: string中的“+”操作,不能把两个字面值直接相加,比如string s="hello" + "world"; 是不行的。因为字面值常量不是string类型,“+”运算符两侧至少有一个是string。
    //  C++ 字符串提供了以下两种类型的表现形式
    // 1:C风格的 字符串
    // 2: C++引入的string类类型
    std::cout << std::endl;
    string s("value");
    string s1 = "value2";
    cout << "读出之前定义的字符串s: " << s << endl;
    std::cout << std::endl;
    cout << "读出之前定义的字符串s1: " << s1 << endl;

    char site[4] = { 'a','b','c' }; // 之所以长度是4 ,因为编译器需要在数组末尾补上一个空字符
    cout << "读出之前定义的字符串site: " << site << endl;


    // 4: 结构体简介 :结构是一种比数组更加灵活的方式,可以存储多种数据类型
   

   // 5: 联合体简介: 


    // 6: C++ 地址 : 我们知道每一个变量都有一个内存位置,每一个内存位置都定义 可使用 (&)运算符来访问变量的地址。
    //  var1变量的地址:000000B4F595F9F4
    //  var2变量的地址:000000B4F595FA18
    std::cout << std::endl;
    int var1;
    char var2[10];
    cout << "var1变量的地址:" << & var1 << endl;
    cout << "var2变量的地址:" << &var2 << endl;
    std::cout << std::endl;

    // 6.1 C++ 指针: 指针是一个变量,其值为另一个变量的地址(内存位置的直接地址),所以您必须在使用指针存储其他变量地址之前,对其声明
    // 指针类型不管是 整型,浮点型,字符型还是其他数据类型,他们都是代表内存地址的十六进制数,不同类型指针之间唯一的区别:指针所指向的
    // 变量或者常量的数据类型不同。
    // 约定 : 如果有这么一个指针变量 *ip, 那么: ip : 表示指针变量存储的内存地址, *ip : 表示方位存储的内存地址对于的值

    int var = 20; // 实际变量的声明,存储的值是 20 
    int *ip; // 指针变量的声明

    ip = &var; // 指针变量存储一个内存地址:var的内存地址

    std::cout << std::endl;
    cout << "var 变量的值是:" << var << "\n" << endl; 
    cout << "指针ip 存储的内存地址:" << ip << "\n" << endl;  // 00000096B54FF834
    cout << "指针ip 存储的内存地址 的值:" << *ip << "\n" << endl; // 20 
    cout << "指针ip 本身的内存地址:" << &ip << "\n" << endl; // 00000096B54FF858

    // 6.2 C++指向指针的指针(多级间接寻址):指针的指针就是将:一个指针的本身的地址,放在另一个指针里面取存储
    
    std::cout << std::endl;
    int var3 = 30; // 实际变量的声明,存储的值是 20 
    int *p; // 指针变量的声明
    int **pp; // 指针变量的声明

    p = &var3; // 指针P变量存储一个内存地址:var的内存地址
    pp = &p; // 指针变量pp 存储指针变量p 的本身地址

    cout << "var3 变量的地址是:" << &var3 << "\n" << endl; // 0000005DD58FF904
    cout << "指针 p 存储的内存地址:" << p << "\n" << endl;  //  0000005DD58FF904
    cout << "指针 p 本身的内存地址:" << &p << "\n" << endl; // 0000005DD58FF928
    cout << "指针 p 存储的内存地址 的值:" << *p << "\n" << endl; // 30
    

    cout << "指针 pp 存储的内存地址:" << pp << "\n" << endl; // 0000005DD58FF928
    cout << "指针 pp 本身的内存地址:" << &pp << "\n" << endl; //  0000005DD58FF948
    cout << "指针 pp 存储的内存地址 的值:" << *pp << "\n" << endl; //  0000005DD58FF904

}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单


你可能感兴趣的:(C++,C++)