小工具知识网

当前位置: 首页 > 行业知识 > C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

行业知识

C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

2026-10-19 12:21:17 来源:互联网转载

文章目录

    • 一、引用
      • 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://m.xiaogongju.com.cn/uploads/allimg/20250423/-25042310215G60.png" //p pimg src="https://m.xiaogongju.com.cn/uploads/allimg/20250423/-25042310215Mc.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 

上一篇:服务器散热马达怎么拆?

下一篇:织梦网站公司介绍简易修改指南,轻松打造吸引人的简介文案