举例分析:把指针作为函数参数传递

void fun(vector<int>*);
函数声明中把指针vector<int>*作为函数参数传递

//小问学编程
#include <iostream>
#include<vector>
using namespace std;void fun(vector<int>*);int main()
{int a[8]={8,35,12,456,24};vector<int> vec(a,a+8);cout<<"被子函数fun修改前的vec :";for(int i=0;i<vec.size();++i)cout<<vec[i]<<' ';cout<<endl;fun(&vec);cout<<"被子函数fun修改后的vec :";for(int i=0;i<vec.size();++i)cout<<vec[i]<<' ';return 0;
}void fun(vector<int> *The_vec)
{for(int i=0;i<The_vec->size();++i)(*The_vec)[i]+=1;
}
//本代码改自《Essential C++》侯捷译P47

运行结果:

注意本例以下几处:

pass by pointer和pass by reference传递的效果相同:传递的是对象地址,而不是整个对象的副本(都属于传址,而不是传值,差别在于reference和pointer的用法不同)。这得以直接对传入的对象进行修改,并且降低了复制对象的额外负担。但一般来说,除非你希望在函数内更改参数值,否则建议在传递内置类型时,不要使用传址方式。传址机制主要用于传递class object。

《Essential C++》笔记之传指针(pass by pointer)分析相关推荐

  1. 《Essential C++》笔记之传引用(pass by reference)分析

    参考博文:C++中,传值.传地址.传引用究竟有何区别 参考博文:C++作用域.局部变量.全局变量.传引用传值对比的一个例子 举例分析:把引用作为函数参数传递 bool fibon_elem(int,i ...

  2. Rust简短笔记:原始指针(Raw Pointer)

    众所周知,Rust语言的指针是一种安全的指针,它会遵循一定的规则,比如ownership规则,会确保不出现悬挂指针.但是当我们需要写一些底层框架的时候,往往需要绕过这些规则,自由的控制指针,这时候我们 ...

  3. C++ 函数参数传递:传值,传指针,传引用

    PS:首先理解形参   实参概念.形参是在函数定义的括号内定义的专用变量,它们的目的是保存按实参传递给它们的信息,实参被列在函数调用语句的括号内. int func(int x)//x是形参 {ret ...

  4. golang中int类型切片无需传指针

    golang中int类型切片无需传指针就可以改变切片的值 func main() {x := []int{1, 2, 3}func(arr []int) {arr[0] = 7fmt.Println( ...

  5. 【C++】21.函数传参 传指针和传引用的区别

    指针传参 向函数传指针参数时,注意区分指针的指向(地址) 与 指针指向的地址中存放的值的区别: 改变形参指针的指向,实参指针指向不会变,实参指向的地址存放的值也不会变: 改变形参指针指向的地址中存放的 ...

  6. 【c++】5.函数传指针与传值特容易混淆的点

    函数传指针与传值特容易混淆的点 这里只做一部分的解析,详解请参考 指针参数传递动态内存 https://blog.csdn.net/daaikuaichuan/article/details/7722 ...

  7. C++ 传指针还是引用?

    用C++做了一段时间毕业设计了,突然有一天被困在传指针还是传引用的问题上.后来翻看了<C++ 编程规范>,并结合了项目实际情况,总结出下面结论: 传指针 如果函数保存了地址.例:复制地址给 ...

  8. 【汇编】C++ 函数调用之——有参无返回调用(传指针)

    2019独角兽企业重金招聘Python工程师标准>>> 一.传值 二.传指针(地址) 传地址调用函数顾名思义,就是向被调函数传递的是一个地址值,而不是数据内容,这个地址通常是一个32 ...

  9. php函数里面传指针

    今天在代码里面看到一个迷惑的地方,函数形参是个指针.想一想也是对的,传指针可以修改在函数之外的变量,这个跟在foreach里面用用指针&key赋值,之后unset一样的道理,mark一下 $p ...

最新文章

  1. 使用Zabbix官方模板监控MySQL
  2. PHP5 mysqli 教程
  3. Linux打开bashrc权限不够,bash-4.2$ bash: /home/test/.bashrc: 权限不够
  4. 为什么c相电路在前面_Buck电路的多角度分析
  5. c++ std::async的注意事项
  6. 云客Drupal源码分析之节点表单NodeForm
  7. 【Unity】关于ScreenCapture.CaptureScreenshot截屏的尝试
  8. mysql查询top10_各个数据库中TOP10记录的查询方法
  9. mysql的填充因子_为索引指定填充因子
  10. Lua实现简易飞机大战
  11. adf机器_adf(adf文件转成shp)
  12. XTransfer技术专家康康:从普通程序员到架构师的进化之路
  13. 关于时域、频域和波数域的一些概念
  14. 开立证券账户常见问题
  15. ant安装、环境变量配置、ant实例
  16. Unity将粒子光效导出成png序列帧
  17. ESI排名世界前1‰,保研到中科大计算机有多难?
  18. Python计算自由下落距离
  19. Hust oj 2157 吃豆豆
  20. Python 利用 pyecharts 做数据分析绘图

热门文章

  1. Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
  2. 基于JAVA+SpringBoot+Mybatis+MYSQL的实验室预约信息管理系统
  3. c语言定义不定长数组初始化_大学C语言期末考试练习题(带详解答案)(1)
  4. C语言dev查看调试变量,C语言程序设计-c4_C语言上机_Dev调试.doc
  5. linux ubuntu mysql 安装_1.MySQL的安装(linux Ubuntu环境下)
  6. C#中的as和is的使用方法
  7. kubernetes系列11—PV和PVC详解
  8. Go学习笔记(只有链接)
  9. 区间DP--凸多边形三角剖分
  10. JMeter使用总结