两数交换问题及栈的初了解

运行代码是窗口一闪而过了。

出现这种情况呢,解决办法——>1.在代码后面加system(pause)system()库函数 ——执行系统命令——pause(暂停)

                                                    2.在VS页面找到调试页面,点击最下方的属性,打开配置属性,点击链接器,连接器里有系统,打开系统页面,将子系统改为控制台,然后点击下方应用 + 确定。

两数交换问题及栈的初了解

 

 可以看到 a 和 b 的值并没有交换达到我预想的结果。

两数交换问题及栈的初了解

 

 

 这次我输入了 a 的地址和 b 的地址,通过访问地址去改变 a 和 b 的值。 

经过多次的学习,也略懂了这其中的猫腻:函数在创建的时,所创建的的形参,都是从栈上申请空间的。作用的生命周期只有从进入函数开始,出函数释放。

从形参和实参的关系看,可以理解为形参是实参的一份零时拷贝,进入函数改变的是拷贝的值,出函数时空间释放。实参相当于什么都没有变。

那如果我就第一个图而说,我在格式化输出的时候直接访问这个地址呗。这种做法是很危险的,属于非法访问。(函数出的时候已经释放了空间,这份空间里面的内容已经不属于你了)

当我输入地址的时候,意味着我是通过地址去创建这个函数的,改变的值就是实参的值。

当然还有一种方法:加入static————修饰局部变量(延长生命周期)

注:函数创建的时候我的返回类型是 int 的型,那么就必须有一个返回值。值得注意的是,返回值也只能是一个。

 

两数交换问题及栈的初了解

上一篇:Rust 学习之 Package、Crate、Module


下一篇:LeetCode0003 无重复字符的最长子串