👀👀#c++中包括算数类型和空类型。
类型 含义
wchat_t 宽字符
bool 布尔类型
char 字符
chat16_t unicode字符
chat_32 unicode字符
short 短整型
int 整形
long 长整型
longlong 长整型
float 单精度浮点型
double 双精度浮点型
longdouble 扩展精度浮点型
👀👀#复合类型:
是基于其他类型定义的类型(引用和指针)。
引用:为对象起一个名字,引用类型引用另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名。
int ival =1024;
int &refo =ival;
1
2
注释:refo指向ival(是ival的另外一个名字)
👀👀#引用本质就是一个指针变量。
引用一旦初始化后,就不可以再发生改变(不能再引用其他变量)
int a=10;
int c=12;
//编译器自动转化为:int* const b=&b;
//指针常量是指针指向不可以改变,同理证明为什么引用不可以更改
int &b=a;
//int &b=c;(错误写法)
1
2
3
4
5
6
7
引用需要一个合法的内存空间
// int &ref=10; 错误写法
//更改方法
const int &ref =10;
//编译器可以优化代码即等价于:
int temp=10;
const int &ref =temp;
//加const以后就不能再更改变量的值了
1
2
3
4
5
6
7
👀👀#引用传递
include
using namespace std;
void swap(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
cout << a << endl;
cout << b << endl;
}
int main()
{
int a = 10;
int b = 20;
swap(a, b);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
引用传递,形参会修饰实参。(实参也会改变)
👀👀#简单介绍一下const的用法:
const int * const p =&a;
1
特点:指针指向和指针指向的值都不可以改变。
int * const p= &a;
1
指针常量特点:
指针的指向不可以改,指针指向的值可以改变。
const int * p =&a;
1
常量指针特点:
指针的指向可以修改,但是指针指向的值不可以改变。
👀👀#指针
指针是实现了对其他对象的间接访问。
指针本身就是一个对象,可以指针赋值和拷贝,在指针的生命周期内可以先后指向几个不同对象。指针无需在定义时赋值。
指针值
应该处于4种状态之一
1.指向一个对象
2.指向紧邻对象所占空间的下一个位置
3.空指针,没有指向任何对象
4.无效指针。(其他3种情况之外)
👀👀#void * 指针
特殊类型指针,可以存放任意对象的地址,作为函数的输入和输出、不能直接操作void * 指针所指的对象,(因为不知道所指对象类型)