什么时候使用引用、什么时候使用指针

2023-10-30

使用引用参数的主要原因有两个:

  • 程序员能修改调用函数中的数据对象
  • 通过传递引用而不是整个数据–对象,可以提高程序的运行速度
    一般的原则:
    对于使用引用的值而不做修改的函数:
  • 如果数据对象很小,如内置数据类型或者小型结构,则按照值传递
  • 如果数据对象是数组,则使用指针(唯一的选择),并且指针声明为指向const的指针
  • 如果数据对象是较大的结构,则使用const指针或者引用,已提高程序的效率。这样可以节省结构所需的时间和空间
  • 如果数据对象是类对象,则使用const引用(传递类对象参数的标准方式是按照引用传递)
    对于修改函数中数据的函数:
  • 如果数据是内置数据类型,则使用指针
  • 如果数据对象是数组,则只能使用指针
  • 如果数据对象是结构,则使用引用或者指针
  • 如果数据是类对象,则使用引用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么时候使用引用、什么时候使用指针 的相关文章

  • vscode使用ssh远程linux可视化开发环境搭建

    目录 1 搭建 vscode 远程开发流程 2 在线搭建环境 3 离线搭建环境 4 ssh免密登录 设置白名单 5 参考文档 最近一直在做服务引擎开发 编译都是在服务器linux环境中进行 每次调试使用gdb修改使用vim贼麻烦 最后找了下
  • 指针字符串 与 const char * 即const * char 的详细使用讲解

    指针字符串的使用问题 一 直接定义字符串指针的使用注意事项 定义字符串指针的时候 const char 和字符串本身相同 就不会出现警告 const char char const 作用 const char p 表示的是指针p指向的数值不
  • 初识Java——指针

    指针 Pointer 还记得第一次接触指针是在大一的c语言学习中 当时学完之后只知道 就是代表的指针 但是至于其真实含义及用法还没有真正学会 这一次从零开始学习Java 又一次学习到了指针 因此对指针有了更多的认识 下面就是通过最近的学习我
  • 【c++primer第五版】第六章函数-函数基础、参数传递、返回类型、函数重载、函数指针

    目录 函数基础 局部对象 函数声明 参数传递 main 处理命令行选项 特殊用途语言特性 调试帮助 函数匹配 函数指针 函数是一个命名了的代码块 通过调用相应的函数来执行相应的代码 函数可以有0或多个参数 通常会产生一个结果 也可以重载函数
  • C/C++之内存四区

    程序运行时 将内存大致分为四个区域 代码区 存放函数体的二进制代码 由操作系统进行管理的 全局区 存放 全局变量和 静态变量以及 常量 栈区 由编译器自动分配释放 存放函数的参数值 局部变量等 堆区 由程序员分配和释放 若程序员不释放 程序
  • Go(九)指针

    目录 Go语言中的指针 1 1 指针地址和指针类型 1 2 指针取值 1 3 new和make 1 3 1 new 1 3 2 make 1 3 3 new与make的区别 区别于C C 中的指针 Go语言中的指针不能进行偏移和运算 是安全
  • c++智能指针

    C 智能指针详解 C 有四个智能指针 auto ptr unique ptr shared ptr weak ptr 其中后三个是C 11支持 第一个已经被C 11弃用 智能指针介绍 智能指针主要用于管理在堆上分配的内存 它将普通的指针封装
  • C语言中关键字const、static、volatile的用法分析

    1 const 作为一个程序员 我们看到关键字const时 首先想到的应该是 只读 因为 它要求其所修饰的对象为常量 不可对其修改和二次赋值操作 不能作为左值出现 看几个例子 const int a 同上面的代码行是等价的 都表示一个常整形
  • 突如其来的C#重新学习(2)

    突如其来的C 重新学习 2 关于Main入口点的问题 Main在C 中不能单独声明 所以必须声明在同一个类中 而且必须声明静态方法 返回可以是void或者int 正常执行应当返回0 对于一个命名空间之内有很多的类的情况下 就可以手动选择从哪
  • 流操作

    StreamReader 与 FileStream 的区别用法 有关StreamReader的内容参考http blog sina com cn s blog 796ffec50100te51 html StreamReader 旨在以一种
  • C++智能指针:shared_ptr用法详解

    C 智能指针 shared ptr用法详解 shared ptr是C 11里的新特性 其包装了new操作符在堆上分配的动态对象 如 shared ptr
  • 剑指Offer 22. 链表中倒数第k个节点(Easy)/ 19. 删除链表的倒数第 N 个结点(Medium)/ ListNode调用!!!

    LeetCode 19 删除链表的倒数第 N 个结点 Medium 题目链接 题解 链表中倒数第 k 个节点 双指针 清晰图解 思路 代码 Definition for singly linked list class ListNode d
  • C++中的friend详细解析

    https blog csdn net u012861978 article details 52095607
  • java 中的指针_Java中的指针

    java 中的指针 Java中有指针吗 简短的答案是 不 没有 这对于许多开发人员来说似乎是显而易见的 但是 为什么对其他人却不那么明显呢 http stackoverflow com questions 1750106 how can i
  • c++使用继承类实现异常处理

    sales h pragma once include
  • C语言深入学习--checklist4:宏、枚举、switch

    宏 1 宏的本质是什么 函数 语句 类型定义 或者其它 预编译器的文本替换 1 你知道语言设计者为什么设计宏吗 这些原因目前是否成立 在 C程序中 可以用宏代码提高执行效率 宏代码本身不是函数 但使用起来象函数 预处理器用复制宏代码的方式代
  • C++:指向类的成员的指针

    引 想必接触过C的朋友们对C语言中指针的概念已经有了深入的了解 如果初步进行了解的朋友可以看一下 C语言基础学习笔记 指针展开来讲的基本知识点包括 指针的概念 指针的定义和初始化及简单使用 指针函数和函数指针 有关指针函数和函数指针的内容上
  • 所有OLE接口

    比较有用 记录下来供查阅 常规 函数 lUnknown 目的 控制的接口协商的对象生存期 普遍存在的任何组件 而不考虑实现 QueryInterface 公开传入的接口 函数 IEnum 目的 枚举的各种类型的列表 在许多情况下 整个 OL
  • acwing算法提高之动态规划--最长上升子序列模型(上)

    目录 1 基础知识 2 模板 3 工程化 1 基础知识 暂无 2 模板 暂无 3 工程化 题目1 怪盗基德的滑翔翼 有N个数 表示房屋的高度 你可以任意选择一个房屋作为起点 选择朝左飞 或者朝右飞 必须严格递减才能够飞到下一个房屋 求经过的
  • acwing算法提高之动态规划--数字三角形模型

    目录 1 基础知识 2 模板 3 工程化 1 基础知识 暂无 2 模板 暂无 3 工程化 题目1 摘花生 解题思路 DP 状态定义 f i j 从 1 1 走到 i j 所摘花生总和 状态转移 有 从上方走到 i j 有 f i 1 j w

随机推荐

  • C#实现海康威视摄像头的控制

    C 实现海康威视摄像头控制 海康威视网络摄像头SDK开发示例 C C Java Python等
  • (android 地图开发) 高德地图添加浮动按钮

    问题描述 在地图上添加一个按钮 可以响应点击 但是按钮时固定的 地图拖动时 按钮不能动 解决思路 刚开始接触地图开发时 也曾经在这个问题上纠结过 刚刚学会了在地图上添加各种图层 无论是在地图上画大头针也好 绘制路线也好 都是使用图层来处理
  • c++临时对象与空指针导致clion debugger无法运行的bug

    c 临时对象与空指针导致clion debugger无法运行的bug include
  • Linux下安装Tomcat,部署web项目

    一个Linux下运行两个Tomcat的通用做法 一 准备 Tomcat的Linux版本安装包 apache tomcat 7 0 85 tar gz 项目的war包 henNB war eclipse导出为war或者idea build w
  • SQL注入之堆叠注入(sql-lab第38关)

    什么是堆叠注入 在SQL中 分号 是用来表示一条SQL语句结束的 试想一下我们在分号结束一个SQL语句后继续构造下一条语句 会不会一起执行 因此这个想法也就造就了堆叠注入 而堆叠注入可以执行的是任意语句 增删改查 例如以下这个例子 用户输入
  • IDEA启动tomcat控制台中文乱码问题

    项目结构 pom xml
  • osg fbo(一),生成颜色缓冲区图片

    由于工作需要 重新捡了下shader 很明显 fbo是重中之重 好记性不如烂笔头 先记录下 1 生成一个颜色纹理 为了省事 可以将纹理宽高 屏幕宽高 osg ref ptr
  • android10编译 lunch失败,Android各种编译错误的解决方案

    相信大家在编译固件的时候 经常会遇到莫名奇妙的编译错误 从今往后 不用再受这个问题的困扰了 1 常见编译的错误信息 make 1 No rule to make target out target common obj PACKAGING
  • 机器学习---算法基础(十一)贝叶斯网络

    参考文章 频率学派还是贝叶斯学派 聊一聊机器学习中的MLE和MAP 贝叶斯网络 看完这篇我终于理解了 附代码 概率图模型之贝叶斯网络 背景 边缘分布 条件分布 边缘分布 对于单个因素所发生的概率 不考虑其他因素 例如P A 条件分布 在某个
  • 【机器学习-西瓜书】第3章-线性模型

    3 1 基本形式 示例x由 d个属性描述 线性模型 试图学得一个通过属性的线性组合来进行预测的函数 即 3 2 线性回归 3 2 1 一元线性回归 for regression 给定数据集 先考虑最简单的情形 输入只有一个属性 此时线性回归
  • Vue项目打包为桌面应用

    name deskapp version 1 0 0 description main App index html window title 我的桌面应用 icon width 1366 height 768 toolbar false
  • 三个箭头循环标志_科目一交通标志

    如遇格式错乱 图片无法加载 请点击下方链接阅读原文 驾考系列 科目一交通标志 stackoverflow club 分类 交通标志分为主标志和辅助标志两大类 主标志有警告标志 禁令标志 指示标志和指路标志 警告标志 警告车辆与行人注意 黄底
  • springboot项目打包

    springboot项目打包 一 遇到问题 二 项目打包 一 遇到问题 问题 无效的标记 release spring boot starter parent 版本为3 0 0以及以上 与jdk1 8的版本不匹配 release是jdk1
  • 网络爬虫选择代理IP的标准

    Hey 小伙伴们 作为一家http代理产品供应商 我知道网络爬虫在选择代理IP时可能会遇到些问题 毕竟市面上有很多选择 别担心 今天我要给大家分享一些实用的建议 帮助你们选择适合网络爬虫的代理IP 一起来看看吧 首先 我们需要了解爬虫使用代
  • css中如何调整元素位置

    我们通常把样式层叠表叫做css 它是用来修饰html内容的 给内容加各种各样的样式和效果 那么在写实际项目过程中经常会遇到一个普遍性问题 就是调整元素的位置 如果只对于初学编程的人来说 只能用css的知识去做 我们也可以总结一些实用性办法
  • LVGL-输入设备LV_INDEV_TYPE_POINTER类型

    void lv indev read task lv task t task 是定时执行的输入设备任务回调函数 会处理输入设备的数据 按下的处理 static void indev proc press lv indev proc t pr
  • No module named ‘torch_geometric‘解决办法

    写在前面 1 不能简单的直接pip install torch geometric或者 conda install torch geometric 2 直接安装 到后面调用的时候还是会报错 需要先安装四个小部件再安装torch geomet
  • 数字图像处理篇(3)open-cv图像增强之点运算

    目录 一 点运算 1 灰度变换 2 直方图增强 二 空间滤波 1 平滑 线性平滑滤波 邻域平均法 线性平滑滤波 加权平均法 高斯滤波 2 锐化 又到了新的一周 是时候继续学习计算机视觉的先导知识啦 上次我们说过 这次的学习路线大致如下图 今
  • PHP与MySQL程序设计 学习笔记 第三章 PHP基础

    PHP可将代码嵌入到HTML页面中 要让代码完成任务 必须把页面传递给PHP引擎进行解释 但Web服务器并不传递所有页面 只传递具有特定文件扩展标识 一般为 php 的页面 即使只传递某些页面 效率也很低下 因为每一行都可能是一个php命令
  • 什么时候使用引用、什么时候使用指针

    使用引用参数的主要原因有两个 程序员能修改调用函数中的数据对象 通过传递引用而不是整个数据 对象 可以提高程序的运行速度一般的原则 对于使用引用的值而不做修改的函数 如果数据对象很小 如内置数据类型或者小型结构 则按照值传递 如果数据对象是