实参和形参指针做函数参数时,如何改变main函数变量的值

本文介绍了一种利用指针实现两个整数变量值交换的方法,并详细解释了为何直接交换指针值无法达到预期效果。通过具体的C++代码示例,读者可以了解如何正确地使用指针来修改原始变量的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//对输入的两个整数按大小顺序输出

代码如下:

#include<iostream>
using namespace std;
int main()
{
    void swap(int *p1,int *p2);
    int *pointer_1,*pointer_2,a,b;
    cin>>a>>b;
    pointer_1=&a;
    pointer_2=&b;
    if(a<b)swap(pointer_1,pointer_2);
    cout<<"max="<<a<<' '<<"min="<<b<<endl;
    return 0;
}
<span style="color:#ff0000;">void swap(int *p1,int *p2)
{
    int temp;
    temp=*p1;
    *p1=*p2;
    *p2=temp;
}</span>
注释:在用变量作函数参数时,虚实结合是采取单向的‘值传递’只能从实参向形参传递数据,形参值的改变无法传回实参,即实参的值不会因为形参的改变而改变。(指针变量做函数参数时也应遵循这一规则,当然字符数组名做函数参数时除外)这里我想说的是,用指针变量做函数参数时,在函数执行过程中使指针所指向的变量的值发生改变,在函数调用结束后,这些变量值的变化被保留下来,这样就实现了通过调用函数使变量的值发生改变,在主调函数中就使用了这些改变了的值。

然而不能试图通过改变形参指针变量的值而使实参指针变量的值改变。例如这样:

void swap(int *p1,int *p2)
{
    int *temp;
    temp=p1;
    p1=p2;
    p2=temp;
}
所以调用函数时不会改变实参指针变量的值,但可以改变实参指针变量所指向变量的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值