vector
这个认识是极端错误的
int a[]为包含数据为int型的数组,一组int类型的数据存放在内存中连续的空间内,是C++定义的最基本的内置数据类型之一
vector是一个容器,vector
类的定义不仅包含数据,实际上也包含了这个数据上可以执行的操作
比如对于vector,定义了自己的方法,可以遍历、修改vector内的数据
不仅如此,还重载了一系列操作符,包括=
函数传值有两种方式,一种是传值,一种是传引用
void myfun(vector
这是传引用的方式,这样这个函数对a的修改就是对调用他的函数中原来数据b的修改
而
void myfun(vector
是传值的方式,因为C++中已经定义了vector的=操作
这样这个函数就会构造一个新的vector,调用=操作符,把原来的b的数据复制到a里
然后函数里对a的修改都是这个副本的修改
函数调用完毕,这个副本也销毁了,原来的b并没有修改
调用的时候当然是myfun(a)
1,a只是vector
2,定义void myfun(vector
3,调用的时候myfun(a),这是引用形参函数调用的时候就应该这样写,就是规矩,要是你早这么N年出生说不定规矩是你定
ps:建议楼主补充C++关于引用作为函数形参的知识,以及关于类的相关知识,貌似对于面向对象不怎么了解
1、a是类对象,不是指针,自然&a才是指向它的地址。
2、&在类型定义中有引用的意思,这里自然是做引用了,做引用可以节省内存空间,减少拷贝vector时的时间消耗,又可以直接操作变量本身。
3、学到引用时这个问题就能理解了。