当前位置: 首页 > article >正文

C++参数传递

值传递:创造一个副本,函数内部的操作都是对此副本的操作

void print(int x) {
    std::cout << "The value is: " << x ;
}

目的:简单直观,适合小型对象

引用传递:对原始数据直接操作,会改变原始数据

void print(int &x) {
    std::cout << "The value is: " << x ;
}

目的:1、避免拷贝带来的开销,适合大型对象;2、为了通过这个函数修改原始参数

const&传递:

void print(const int &x) {
    std::cout << "The value is: " << x ;
    // x = 10; // 编译错误:不能修改const引用
}

目的:为了高效传递参数,而且不改变原始数据。(在函数内部对它修改会报错)

指针传递:对原始数据操作,会改变原始数据

// 按指针传递
void modifyValueByPtr(int *x) {
    if (x != nullptr) { // 检查指针是否为空
        *x = 200;       // 修改指针所指向的值
        std::cout << "Inside modifyValueByPtr, *x is now: " << *x << std::endl;
    } else {
        std::cout << "modifyValueByPtr received a null pointer." << std::endl;
    }
}

int *x 表示x是一个指针,它指向一个整数型变量的地址,而不是这个整数 

int *x;x = &value;表示x是一个指向int型变量的指针,&value表示吧value这个变量的地址赋给x


http://www.kler.cn/a/430594.html

相关文章:

  • 了解比特币
  • 【单细胞-第三节 多样本数据分析】
  • Web - CSS3浮动定位与背景样式
  • NLP模型大对比:Transformer >Seq2Seq > LSTM > RNN > n-gram
  • Spring Boot框架下的单元测试
  • 【leetcode练习·二叉树拓展】快速排序详解及应用
  • 汽车总线协议分析-CAN总线
  • aosp15上winscope离线html如何使用?
  • Lambda表达式随记
  • 多AI代理框架全面对比:AutoGen、LangGraph、CrewAI、Swarm、Magentic-One,选对你的AI超级助手!
  • 软件测试丨Appium 源码分析与定制
  • 网络编程(2)(对于UDP与TCP协议深层理解)
  • hhdb客户端介绍(10)
  • 实时数据开发|Flink状态类型
  • 【面试】Spirng的IOC启动流程
  • qmake 生成debug/qmake 生成release
  • Linux 常用命令大全:文件管理、系统信息、网络操作
  • 40分钟学 Go 语言高并发:服务监控与追踪
  • selenium:新窗口切换、关闭
  • 【优选算法篇】:揭开二分查找算法的神秘面纱--数据海洋中的精准定位器
  • 深入探索 JVM:原理、机制与实战
  • docker-compose 安装部署zabbix
  • 2024年发布的多模态大语言模型和它们采用的设计方法
  • RabbitMQ如何保证消息不被重复消费
  • zookeeper 搭建集群
  • 理解 CAP 理论:分布式系统中的权衡与选择 | 常用组件中的CP和AP