我只是在玩这些功能和参数。
#include <iostream>
using namespace std;
int function(char *str,int b);
int main()
{
char *str = new char[10];
memset(str,0,10);
int a = 10;
int b = 10;
function(str,b);
function(str,a);
}
//FUnction Definition
int function(char *str,int b)
{
cout << &str << "\t" << &b << "endl"
return 0;
}
我在VS2010 C ++中编译这段代码,
当我们按值传递某些东西时,会创建一个新值,复制传递的变量中的内容。所以函数体中的b
肯定会有不同的地址。
我所看到的是,函数参数在多次调用中保持在同一地址位置。
我猜测的是函数的参数每个都用内存位置映射,其中包含函数上调用的变量
我只是想知道这是否还有别的东西。
答案 0 :(得分:0)
本地变量的地址可以重复用于后续调用。没错。
答案 1 :(得分:0)
局部变量在内存中位于同一地址的原因是因为您从main -> function
进行调用,并且始终以相同的方式调整堆栈以使function
如果您将代码更改为main
调用另一个函数然后调用function
,那么您会注意到局部变量和参数具有不同的地址,因为它们将位于堆栈框架中在不同的地址。
注意:所有这些都假设您的编译器没有进行优化。