结论:
1,vector做函数参数,当vector参数做输出(vector数组需要在函数中被改变)的时候,需要传入vector的引用。
2,vector做函数参数,当vector参数做输入参数(只使用不改变)时,直接传数组进来就行,不需要传引用。
3,普通数组(arr[])做函数参数,不管是输入参数还是输出参数都只传数组名进函数就行。
4,普通数组做函数参数被传入函数后,会退阶为arr[0]处的指针,又因为普通数组是连续的内存空间,可以通过数组首地址对数组元素进行访问和修改,所以不用传引用。
5,vector类型的数组是一个STL类对象,做函数参数后,该函数会在函数内部重新拷贝一个vector对象,当vector做函数参数输出的时候,函数内部操作的vector对象是拷贝后的vector对象,在函数执行结束后,拷贝后的vector对象会被析构。而原来的vector对象不会发生任何改变。但如果传入引用做函数参数,结果就大不相同。引用参数是原参数的别名,引用做函数参数时,函数内部操作的参数就是该引用参数,所以,当该函数执行结束后,不会析构引用对象。

 #include <iostream>#include <vector>using namespace std;int printNums1(int a[], int len) {for(int i = 0; i < len; i++) {cout << a[i] << " ";}cout << endl;a[6] = 9;a[7] = 9;a[8] = 9;a[9] = 9;return 0;}int printNums2(vector<int> a) {vector<int>::iterator it;for(it = a.begin(); it != a.end(); it++) {cout << *it << " ";}cout << endl;a.push_back(66);a.push_back(77);a.push_back(88);a.push_back(99);return 0;}int printNums3(vector<int> &a) {vector<int>::iterator it;for(it = a.begin(); it != a.end(); it++) {cout << *it << " ";}cout << endl;a.push_back(66);a.push_back(77);a.push_back(88);a.push_back(99);return 0;}int main() {int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};vector<int> nums;nums.push_back(11);nums.push_back(22);nums.push_back(33);nums.push_back(44);nums.push_back(55);printNums1(a, 10);printNums2(nums); cout << endl;for(int i = 0; i < 10; i++) {cout << a[i] << " ";}cout << endl;vector<int>::iterator it;for(it = nums.begin(); it != nums.end(); it++) {cout << *it << " ";}cout << endl << endl;printNums3(nums);//vector<int>::iterator it;for(it = nums.begin(); it != nums.end(); it++) {cout << *it << " ";}cout << endl;return 0;}/*运行结果:0 1 2 3 4 5 6 7 8 911 22 33 44 550 1 2 3 4 5 9 9 9 911 22 33 44 5511 22 33 44 5511 22 33 44 55 66 77 88 99总结:vector<> nums 是对象,不是指针 ,想要改变其值做输出,必须要引用做函数参数  */

vector做函数参数和普通数组做函数参数有什么区别相关推荐

  1. C语言多维数组做函数参数会退化,数组做函数参数退化问题

    一.数组做函数参数退化问题 数组做函数参数时,会退化为指针. 1.把数组的内存首地址和数组的有效长度传入函数. 2.实参数组和函数参数数组的数据类型不一样.形参中的数组,编译器会把它当做一个指针处理, ...

  2. C语言里的函数指针、指针数组和函数指针数组

    1.函数指针 函数指针也是一个指针变量,但这个指针存放的是一个函数的地址,以前的函数通过函数名来调用,现在也可以通过指针来调用,运用类比法理解,例如以前的**int p是一个整型变量,是一个指向一个整 ...

  3. 【C】C语言函数(包括:函数编写位置、数组作函数实参)

    函数概述 函数的分类 函数是C语言程序基本的组成单位,每个程序有且只能有一个主函数(main()),其他的函数都是子函数.按照不同的额分类标准,函数可以分成不同的类: 函数从是否有返回值,可以将函数分 ...

  4. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

    文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...

  5. c语言数组与函数,C语言的数组与函数

    数组作为函数形参 // 1. 形参是一个指针 void myfunction(int *param) { } // 2. 形参是一个已定义大小的数组 void myfunction(int param ...

  6. oracle数组转换字符串函数,Oracle 字符串转数组的函数

    create type char_table is table of varchar2(4000);--创建自定义类型脚本 create or replace function split_strin ...

  7. C++_const修饰指针_指针和数组_指针和函数_指针配合数组和函数案例_用指针数组实现冒泡排序---C++语言工作笔记024

    然后我们再来看一下const修饰指针 这里第一种是常量指针 可以看到 const int * p =&a 这个p就是一个常量指针,可以看到,常量指针,指明了,这个指针指向的值是一个常量不能修改 ...

  8. C++二维数组做函数参数

    C++二维数组做函数参数 二维数组做函数参数的形式主要有: /对于一个m行n列int元素的二维数组 //函数f的形参形式 f(int daytab[m][n]) {...}//以下两种可以忽略行数 f ...

  9. C++笔记 二维数组作为函数的参数详解 三种传参的方法总结 注意要点总结

    文章目录 1.C/C++ 二维数组作为函数的参数 2.不合法写法总结 3.测试案例 3.1 传参方式1 3.2 传参方式2 3.3 传参方式3 4.运行结果 5.总结 1.C/C++ 二维数组作为函数 ...

最新文章

  1. 《C++面向对象高效编程(第2版)》——3.11 类名、成员函数名、参数类型和文档...
  2. c:线性表的链式表示
  3. MyBatis延迟加载及在spring中集成配置
  4. 九度OJ 1168:字符串的查找删除 (查找)
  5. ux和ui_阅读10个UI / UX设计系统所获得的经验教训
  6. 阿里巴巴下一代云分析型数据库AnalyticDB入选Forrester Wave™ 云数仓评估报告 解读
  7. 净利下降7成、新业务“扛大旗” 阿里转型更需耐心
  8. 功能详细设计文档模板
  9. UmiJS基础UmiJS+Dva
  10. 文件夹批量重命名编号的快速方法
  11. html特殊符号小企鹅,企鹅侦探名字如何取特殊 名字可以使用的特殊符号
  12. Arch LinuxLinux引导教程 2021.7.22
  13. asp和asp.net有什么区别?
  14. php 环比计算公式,详情
  15. NDK Resolution Outcome: Project settings: Gradle model version=XXX, NDK version is UNKNOWN
  16. 如何使用ANT在命令行进行编译和测试
  17. 解决QQ安全进程(护盾)弹出问题
  18. Python的Pexpect详解
  19. 读《精通JavaScript+jQuery》笔记二
  20. 开启 Linux 版的 Window 子系统(WSL)

热门文章

  1. 服务器响应请求状态码(详细版)
  2. 对农行金e顺k令的一些猜测
  3. [汉化主题] Knowhow v1.1.16 – 响应式论坛知识库WordPress主题
  4. Python 字典学习总结(自学)
  5. 【声卡宿主】ProTools 2021.7.0使用安装教程
  6. gotoxy()的用法.
  7. 如何关闭计算机自动休眠状态,电脑自动待机怎么关闭【图解】
  8. 一文搞懂大数据开发,大数据开发体系详解
  9. 计算机自动更新的作用,电脑自动更新系统的好处和坏处有哪些?
  10. 2017年7月工作总结