当我使用字符串作为方法的参数时,函数内字符串的更改不会反映回调用函数。简单的理由按价值传递。字符串和向量作为方法参数的区别
但是,当使用矢量时,对矢量的更改会反映回调用函数中。所以我的问题是传递矢量是否像通过引用调用我们在内存中发送地址而不是变量,因此函数内的任何更改都会反映回调用函数
--------- ---------------更新--------------------------------
所以载体只能通过参考传递?我不能这样做吗?
当然,您可以正常传递它们(即按值传递它们)。但是当你通过值传递对象时会发生什么是一个新的对象被创建,然后你传递的对象被复制到新的对象。对于标准类型(char,int,float等)来说,这是可以的,因为标准类型的大小很小(char是一个字节,short是2,int是2或4,long是4等)。然而,一个矢量并不是那么小。尝试这样做:
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
cout << sizeof(v) << endl;
system("pause");
return 0;
}
在我的电脑我得到12作为输出。那是12个字节。所以我不通过价值传递,我通过它的参考,其中有4个字节的成本(变量的大小持有我的向量的地址)
不,一切都在Java中传递。我们必须看到你对这个论点做了什么。重新分配参数变量不会反映在调用代码的参数中。 –
这应该是一个C++的问题吗? – ajb