1: 数据类型
C++ 规定在创建一个变量或者常量的时候,必须指定出相应的数据类型,否则无法给该变量分配内存空间。
2: 数据类型范围:
2.1 整型 :
整型变量表示的是整数类型的数据。C++中能够表示整型的类型有以下几种方式(区别在于占用的内存空间不同),我们可以通过 sizeof关键字来统计数据类型所占空间的大小
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>
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 <iostream>
#include <string>
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 或调试 >“开始调试”菜单