关于函数的形参实参问题

到底什么时候值才会放生改变呀
比如第一张图 我明白行参无法改变实参的值,但是为什么第二张图的值会发生改变呢
到底什么时候值会发生改变 什么时候值不发生改变呀

img

img

第二张图中,x和y申明成全局变量了,所以num和main函数访问的是同一个变量,自然就会被修改了
而第一张图是函数参数,在变量传递给函数时,函数内部实际是将变量复制了一份,因此函数内部只是修改了复制的变量,而不是main函数中传递的变量,因此无法实现传递变量值的修改

第二张图使用了extern关键字,是用来命声明外部变量的,这种情况下,对x,y做的改变也会影响到原来的值。
还有一种会改变原来的值的方法就是引用传参,比如第一张图,fun函数如果改成引用传参就是:

void fun(int &a, int &b, int &c) // 引用传参
{
    // 引用传参会影响到原来的值
    a = 456;
    b = 567;
    c = 678;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^