C++学习笔记(四)

引言

        C++学习笔记(一)-CSDN博客C++学习笔记(二)-CSDN博客C++学习笔记(三)-CSDN博客,博主之前写的博客包含了C++的程序框架、以及各种关键字在C++中的用法,以及C++中的结构体等相关知识,以及取地址符、const关键字在C++中的应用、内联函数,函数中的默认值,以及C++中的函数重载。

        本篇学习笔记将接着上述的知识点逐渐的梳理,逐步的从C语言中向着C++去过渡,完成向着C++语言的程序结构去过渡。本篇学习笔记将整理C++中的引用,以及C++中开辟动态空间的方法等知识点进行整理。博主也是刚刚开始学习C++的小白,如果学习笔记中有任何的错误之处,还请私信与我,帮我修正错误之处,谢谢。

一、引用在C++中的应用

        在C语言中,我们我们在调用一个函数的时候常采用两种方式进行传输参数。一种是采用拷贝的方式将实际参数传输给形式参数,进行函数的调用。但是这种形式势必会造成一定的空间浪费。所以在我们在学完C语言中的指针部分,将函数调用时的传参改成了传递变量的地址,这种方式极大的节约了内存的占用。

        但是C语言中第二种传递函数的方法写出的代码较为繁琐,举个例子:

//定义的函数

int add(int* x, int* y){

        return *x + *y;

}

 

//主函数中

int a = 10;

int b = 20;

c = add(&a,&b);

printf("%d\n", c);

        该函数将将实际参数a,b的地址传输给形式参数,然后将计算的数值返回。可以看到此种方法虽然减少了内存的占用,但是写起来相对来将就比较繁琐。所以C++为了简化步骤,设计了引用。

        引用的格式:

        类型&  引用变量  = 变量;

        引用变量其实就是相当于变量的另一个名字,没有开辟新的空间,所以引用的最大的用处就是传递参数。

        注意:const修饰的引用有着很多的好处,如:可以提高传参效率,可以保护实参的安全,可以引用常量。

二、引用和指针的区别:

        从编译器角度来讲,引用其实就是更加高级的指针。

        从语法角度来讲,引用变量相当于变量的另一个别名,引用并不会开辟新的空间,但是指针可以指向任何地方,并且指针可以进行多次的赋值,但是引用只可以被引用一次。

三、动态开辟空间的方式

        在c语言中我们采用malloc函数对堆区进行开辟空间,形式如下:

int* p = (int*)malloc(sizeof(int));

//当然开辟内存空间时可能出现开辟失败的情况

if(p == NULL)

{

        printf("开辟内存空间失败\n");

        return -1;

}

//采用此种开辟空间的方式,并没有进行初始化,需要额外进行初始化操作

*p = 1;

 

//为了开辟空间的同时完成初始化操作,此时可以使用calloc开辟空间

int* p = (int*)calloc(2,sizeof(int));

//上述开辟方式中的2指的是开辟2个空间

        在C++中采用new开辟空间,形式如下:

int* p = new int;

//此种开辟没有进行初始化

int* p = new int(1);

//这种开辟空间的同时进行了初始化的操作

 

//在堆区上开辟连续的多个空间

int* p = new int[100];

//在堆区上开辟连续的多个空间并初始化为0的操作

int* p = new int[100]{};

 

//堆上利用new开辟的空间需要手动释放

delete p;

//堆上利用new连续开辟的空间需要利用下行释放

delete[] p;

        注意:当定义了一个结构体类型,构造了不低于1组的类型,在64位的操作系统中,会在链表头前开辟一个8个byte位来保存要构造的次数。此时使用释放开辟的空间时需要使用delete[],而不能使用delete

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

译泽在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值