C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因
温馨提示:这篇文章已超过409天没有更新,请注意相关的内容是否还可用!
文章目录
- 一、引用
- 1.1 引用概念
- 1.2 引用特性
- 1.3 常引用
- 1.4 使用场景
- 1.4.1 做参数
- 1.4.2做返回值
- 1.5 引用和指针的区别
- 1.6 小结一下
- 二、内联函数
- 2.1 内联的概念
- 2.2 内联的特性
- 2.3 【面试题】
- 三、auto关键字(C++11)
- 3.1 类型别名思考
- 3.2 auto简介
- 四、auto的使用细则
- 4.1 基于范围的for循环(C++11)
- 4.2 范围for的使用条件
- 五、指针空值nullptr(C++11)
一、引用
1.1 引用概念
C++是C语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。引用(reference)就是C++对C语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; -->百度百科
- 这个引用就相当于是别名
void TestRef() { int a = 10; int& ra = a;// int a = 10; // int& ra; // 该条语句编译时会出错,必须要初始化 int& ra = a; int& rra = a; printf("%p %p %p\n", &a, &ra, &rra); } int a = 0; // 权限的缩小 const int& c = a; const int x = 10; // 权限的放大 int& y = x; return 0; } int tmp = *a; *a = *b; *b = tmp; } int main() { int x = 0, y = 1; Swap(&x, &y); return 0; } int tmp = a; a = b; b = tmp; } int main() { int x = 0, y = 1; Swap(x, y); return 0; }pimg src="https://img-blog.csdnimg.cn/direct/e7fc7e4b62a245c7a33de9b7e5830ea0.png" //p pimg src="https://img-blog.csdnimg.cn/direct/68956c2f0513430ab5c5deba3743c3b1.png" //p ulli那么引用可以代替指针吗?【不可以!】 blockquote p指针和引用的功能是类似的,有重叠的/ppC++的引用,对指针使用比较复杂的场景进行一些替换,让代码更简单易懂,但是不能完全替代指/p /blockquote ulli针引用不能完全替代指针原因:引用定义后,不能改变指向 blockquote p就比如说在数据结构中学的链表,指针需要改变指向,引用不能改变指向,这就是引用不能代替指针的原因/p /blockquote ulli那java和pythone等其他语言有没有指针?–>没有 - 那他们的链表是怎么实现的呢?–>引用
- 本质上就是引用可以改变指向
- 我们再来看一个案例,在我们学数据结构的时候单链表学习阶段
- 有这这么一段代码,这里的pphead必须要传二级指针,有点不好理解呀
void PushBack(struct Node** pphead, int x) { *pphead = newnode; } int main() { struct Node* plist = NULL; return 0; }- 而我们学了引用就可以这样写了,加上一个引用,也就是phead是plist的一份临时拷贝
void PushBack(struct Node*& phead, int x) { phead = newnode; } int main() { struct Node* plist = NULL; return 0; }传值、传引用效率比较
- 我们这里可以测试一下性能,对比一下传值、传引用
#include struct A { int a[10000]; }; void TestFunc1(A a) {} void TestFunc2(A& a) {} void main() { A a; // 以值作为函数参数 size_t begin1 = clock(); for (size_t i = 0; i
- 我们这里可以测试一下性能,对比一下传值、传引用
- 而我们学了引用就可以这样写了,加上一个引用,也就是phead是plist的一份临时拷贝
- 这个引用就相当于是别名
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
