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

google seo整站优化/抖音seo查询工具

google seo整站优化,抖音seo查询工具,用flash做网站超链接,苏州兼职网站开发系列文章目录 值传递和引用传递是 C 中两种常见的参数传递方式,它们的主要区别在于函数内部对参数的操作是否会影响原始数据 C值传递和引用传递 系列文章目录1、值传递2、引用传递3 、常量引用传递4、值传递 vs 引用传递总结 1、值传递 值传递会复制传入的参数&…

系列文章目录

值传递和引用传递是 C++ 中两种常见的参数传递方式,它们的主要区别在于函数内部对参数的操作是否会影响原始数据

C++值传递和引用传递

  • 系列文章目录
  • 1、值传递
  • 2、引用传递
  • 3 、常量引用传递
  • 4、值传递 vs 引用传递
  • 总结


1、值传递

值传递会复制传入的参数,函数内部对参数的修改不会影响原始数据

#include <iostream>
#include <vector>
using namespace std;void modify(int a){a = 100; // 修改副本的值cout << "modify函数中: a = " << a << endl;
}int main() {int a=10;cout<< "原始变量a的值为:" <<a <<endl;modify(a);cout<< "调用函数之a的值为:" <<a <<endl;return 0;
}

输出:

原始变量a的值为:10
modify函数中: a = 100
调用函数之a的值为:10

解释:

在 modifyValue 函数中,x 是 a 的副本。
修改 x 不会影响原始变量 a。

2、引用传递

引用传递会直接操作原始数据,函数内部对参数的修改会影响原始数据

#include <iostream>
#include <vector>
using namespace std;void modify(int &a){a = 100; // 修改副本的值cout << "modify函数中: a = " << a << endl;
}int main() {int a=10;cout<< "原始变量a的值为:" <<a <<endl;modify(a);cout<< "调用函数之a的值为:" <<a <<endl;return 0;
}

这里修改的地方只是在modify函数中加了一个&
输出结果:

原始变量a的值为:10
modify函数中: a = 100
调用函数之a的值为:100

解释:

在 modifyReference 函数中,x 是 a 的引用。
修改 x 会直接影响原始变量 a。

3 、常量引用传递

如果你不想用值传递(因为会增加拷贝数据的内存开销),又不想修改原始数据,你使用这个就很合适哦。
常量引用传递既避免了值传递的拷贝开销,又防止函数内部修改原始数据

void modify(const int &a){a = 100; // 修改副本的值 这里直接会编译报错,const修饰的变量无法被修改cout << "modify函数中: a = " << a << endl;
}

const修饰的变量无法被修改。

#include <iostream>
#include <vector>
using namespace std;void modify(const int &a){// a = 100; // 修改副本的值 这里直接会编译报错,const修饰的变量无法被修改cout << "modify函数中: a = " << a << endl;
}int main() {int a=10;cout<< "原始变量a的值为:" <<a <<endl;modify(a);cout<< "调用函数之a的值为:" <<a <<endl;return 0;
}

输出如下:

原始变量a的值为:10
modify函数中: a = 10
调用函数之a的值为:10

解释:

在 printValue 函数中,x 是 a 的常量引用。
函数内部不能修改 x,但可以读取其值。

4、值传递 vs 引用传递

对于复杂数据结构(如 std::vector 或 std::string),值传递会导致整个数据被复制,而引用传递则避免了这种开销。

#include <iostream>
#include <vector>
using namespace std;// 值传递示例
void modifyVectorByValue(vector<int> vec) {vec[0] = 100; // 修改副本cout << "modifyVectorByValue function (值传递): ";for (int x : vec) {cout << x << " ";}cout << endl;
}// 引用传递示例
void modifyVectorByReference(vector<int> &vec) { // 使用引用传递vec[0] = 100; // 修改原始数据cout << "modifyVectorByReference function (引用传递): ";for (int x : vec) {cout << x << " ";}cout << endl;
}int main() {vector<int> vec = {1, 2, 3};cout << "原始数据: ";for (int x : vec) {cout << x << " ";}cout << endl;modifyVectorByValue(vec); // 值传递调用cout << "调用值传递之后: ";for (int x : vec) {cout << x << " ";}cout << endl;modifyVectorByReference(vec); // 引用传递调用cout << "调用引用传递之后: ";for (int x : vec) {cout << x << " ";}cout << endl;return 0;
}

输出如下:

原始数据: 1 2 3 
modifyVectorByValue function (值传递): 100 2 3 
调用值传递之后: 1 2 3 
modifyVectorByReference function (引用传递): 100 2 3 
调用引用传递之后: 100 2 3 

总结

特性值传递引用传递常量引用传递
是否复制数据
是否能修改原始数据
性能较低(需要复制数据)较高(直接操作原始数据)较高(避免复制且不可修改)
使用场景数据简单且不需要修改原始数据需要修改原始数据只需读取数据而不修改
http://www.whsansanxincailiao.cn/news/31944360.html

相关文章:

  • web网站开发参考文献/如何推广自己的微信公众号
  • 本地linux做网站/查询友情链接
  • 恒大地产最新消息/网站免费seo
  • 怎样进入网站的后台/重庆seo排名技术
  • wordpress安装插件导致网站/营销网址
  • 梅州网站建设wlwl/广州seo公司推荐
  • b2b行业网站建设/徐汇网站建设
  • 黄页网站推广软件/seo的培训班
  • 交流网站模版/做一个公司网页多少钱
  • 网站建设后期服务收费标准/seo关键词优化报价价格
  • wordpress传到ftp/徐州seo外包
  • 建设职业注册中心网站/优化是什么意思
  • 网站备案简介怎么写/网络营销推广的方法
  • 40平米小户型装修效果图/现在的seo1发布页在哪里
  • 外包网站开发/百度app安卓版下载
  • 织梦做淘宝客网站视频/全国网站排名
  • 网站开发文案模板/网站seo方法
  • 做网站建设注册商标是多少类/太原网站推广排名
  • wordpress无法用qq邮箱验证/株洲seo优化推荐
  • 电商网站建设推广/网络舆情监测平台
  • 公司网站开发费用记入什么科止/天津外贸seo推广
  • asp网站首页模板/全国疫情高峰时间表最新
  • 苏州规划建设局网站/太原百度快照优化排名
  • 江苏建设人才网查询/百度推广优化师
  • 一个简单的html个人简历代码/西安seo关键词排名
  • 网站怎么做seo关键词/百度广告怎么收费标准
  • 网站上的东西不能复制粘贴/品牌网站建设制作
  • ps上做网站/seo类目链接优化
  • 北京外贸网站建设价格/天门seo
  • 网站制作创业/网站推广网站