zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++学习笔记

2023-06-13 09:13:51 时间

theme: channing-cyan

引用

一,& 引用 变量的副本,不区分基本类型和引用类型。

对比与Java:基本类型是值传递,引用类型才是真正的将地址给变量(引用类型的赋值和&一样)

它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。

打印引用打印的是地址值,和引用变量的地址值一样,

引用必须要有一个原始变量,引用也叫原始变量的别名

int a=0

int& b=a 代表对a的引用 数据类型是int

b=1 当修改b时,a也会发生变化,此时a也为1(可见不区分基本类型和引用类型,和a一样)

引用的好处:

1、本身就是原变量,只不过名字不同而已。当调用方法传入引用时不需要像一般的普通变量还要采用值传递的方式 单独创建空间来存储形参(普通方法调用时创建和实参一样的形参然后将实参的值传递给形参需要保存形参),引用本身就是原变量不需要再次创建,相比于指针来说减少了“*”的使用

2,对于指针类型的参数来说,基本类型是传值,引用类型为浅拷贝只拷贝地址。(首先不仅要为这些参数创建空间,对于基本类型修改不影响源变量,而引用类型修改则对应的原变量也会修改)

指针

二,* 指针 指向内存中的地址。* 定义的时候可以写定具体的内存地址,或者指向某个引用的地址,还可以通过new来指向堆的内存*

定义指针:

int* a=0 X 00fffff int* a=new A() a指向堆上面创建出来的内存 int* a=&b 指向变量b的地址 -----&一个变量 打印出来的是这个变量的内存地址 因此也证明了指针指向的是内存地址

赋值或取值

二。1解指针:获取指针对应内存空间的内容。也可以修改对应空间的内容

a=1 代表a指针的地址内容变为1(只能修改同类型的,c++中不像JVM可以统一平台规定固定基本类型的长度,只能规定最少占用的内存;因此这个变量申请了多少内存后面使用的时候也只能用多少内存所以只能 类型相同的修改) *a 获取a指针对应内存空间的内容

构造函数

  1. class 类名():成员变量1(默认值),成员变量2{} :代表成员变量,可以设置默认值用()表示{ 2.构造赋值函数 class 类名(const *a):成员变量1{默认值},成员变量2{a.成员变量} {} 和上面一样只不过默认值和设置值的时候通过{}表示。const就是java的final, 对于值来说,可以直接赋值。