成品网站建设咨询,展馆展示设计公司排名推荐,做社情网站犯法怎么办,wordpress改固定链接1、传值
2、传地址 不论是传值#xff0c;还是传地址#xff0c;形参都是对于实参的一份拷贝
下图为按值传递进行交换#xff1a;
形参left拷贝一块新空间#xff0c;形参right拷贝一块新空间 下图为按指针传递进行交换
形参left拷贝一块新的空间#xff0c;形参right…1、传值
2、传地址 不论是传值还是传地址形参都是对于实参的一份拷贝
下图为按值传递进行交换
形参left拷贝一块新空间形参right拷贝一块新空间 下图为按指针传递进行交换
形参left拷贝一块新的空间形参right拷贝一块新的空间 通过上面发现形参就是实参的一份拷贝不论你是按值传递还是按指针传递。
那么知道了形参就是实参的一份拷贝之后那么就要继续探索拷贝的这块空间中存的啥
值传递显而易见的存放的就是10 和 20 这俩个数值值传递就是拷贝一块空间然后把内容放入新的空间中。 进行交换函数退出形参释放实参不变……额 没有交换
那么传地址呢
其实也一样也是创建一块空间把内容放入我的新空间中只是不同的是这次放的不是一个简单的数据而是一个地址通过对这个地址就可以访问实参中的数据我能访问到实参那么就与实参空间内容产生联系我对你进行解引用交换修改岂不是一步到位
所以为什么说传地址就能修改实参的值呢原因就是上面这段话。 进行交换对形参解引用访问实参中的数据
函数退出、形参释放、完成修改
void Swap1(int *left, int *right)
{cout 形参的值 endl;cout left 的地址: left endl;cout right 的地址: right endl;cout 形参的地址 endl;cout left 的地址: left endl;cout right 的地址: right endl;int *temp left;*left *right;right temp;}void Swap2(int left, int right)
{cout 形参的值 endl;cout left 的地址: left endl;cout right 的地址: right endl;cout 形参的地址 endl;cout left 的地址: left endl;cout right 的地址: right endl;int temp left;left right;right temp;}int main()
{int a 10;int b 20;cout 交换前: endl;cout a 的实参地址为 a endl;cout b 的实参地址为 b endl;Swap2(a, b);cout 交换后: endl;cout a a b b endl;return 0;
}