调用函数改变主函数的变量值的原理c/c++

要点时在构造函数的时候在函数名称右边的参数列表(那个括号)中构造一个指针。

#include <iostream>
using  namespace std;

void wrongechange (int a ){
	a=1;
}
void rightchange(int & a/*&a是a 的地址,之后函数中的a 是地址a之中a 的值————为什么&a a分不清楚,下文解答*/){
	a=1;
}
int main(){
	int hanshuA=0;
	wrongechange(hanshuA);
	cout<<hanshuA<<endl;
	rightchange(hanshuA);
	cout <<hanshuA<<endl;
}
0
1

--------------------------------
Process exited after 0.007158 seconds with return value 0 (0 ms cpu time, 828 KB mem used).

Press ANY key to exit...

为啥分不清楚&a 和a分不清楚,现在我来跟你说:

为什么我在用了&a 之后我们的函数就知道要更改a的地址上的a了?

因为,我们在主函数外面构造函数的时候,函数真正运行时,会自动生成一个局部变量,具体在运行的(int a)这一步,若我们选用int a则会在内存中再随便找出一块“空地”来生成这个变量a,在数值上是和原本的一样的。

但若是选择用int & a电脑就会在空地上生成一个指向主函数a的指针,简单来说就是这时候在空地上复制的是a的地址,a的地址有两份了。

这时候在我们构造的函数中,a的意思是:“  ‘&a’的指针所指向的变量  ”因此这时候就可以改变main函数中a 的值了。

定义名称上的值得注意的地方:

1.定义类(class)和成员函数时名字可以一样。

//部分函数
class myclass{
public:
myclass()
    {
    cout <<"hello world"<<endl;
    }
}

2.不同成员函数的在参数列表不同时名字可以一样

//部分函数
class myclass{
public:
myclass()
    {
    cout <<"hello world"<<endl;
    }
myclass(int a=0,int b=0){
    cout<<a<<b<<endl;
    
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值