关于C和C++中的局部变量和全局变量

首先来看一个例子

#include <iostream>
using namespace std;

int change(int r)
{
    r++;
}

int main()
{
    int x = 5;
    change(x);
    cout << "x = " << x << endl;
    return 0;
}

 将x传入change函数之后,再输出x的值,它是不会改变的,因为传入到change函数中的x只相当于main函数中原x的一个副本,最终输出的结果仍然为5;

 

要想真正改变x的值,应该使用C++中的引用,即在change函数中传入的形参前加上&符号:

#include <iostream>
using namespace std;

int change(int &r)
{
    r++;
}

int main()
{
    int x = 5;
    change(x);
    cout << "x = " << x << endl;
    return 0;
}

   

当然,如果使用纯C(plain c)的语法来实现,就需要使用到指针,可以得到相同的效果

#include <iostream>
using namespace std;
    
void change(int *r)
{
    ++(*r);
}

int main()
{
    int x = 5;
    int *p = &x;
    printf("%d\n",x);
    change(p);
    printf("%d\n",x);
    return 0;
}

 

那么,如果要定义型的引用变量,应该如何实现?

代码如下:

#include <iostream>
using namespace std;

int a = 5,b = 6;
int *p = &a;
int *q = &b;
    
void change(int *&r)
{
    r = q;
}

int main()
{
    cout << *p << endl;
    change(p);
    cout << *p << endl;
    return 0;
}

 

猜你喜欢

转载自blog.csdn.net/smallrain6/article/details/107387773