• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
gddzkw
博客园    首页    新随笔    联系   管理    订阅  订阅
两数交换问题及栈的初了解

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

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

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

 

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

 

 

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

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

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

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

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

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

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

 

posted on 2021-08-17 18:39  又菜又爱玩丶  阅读(95)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3