阿Hun 2021-09-03 08:36 采纳率: 86.7%
浏览 38
已结题

C语言关于函数与构造函数指针问题

写了一个简单的代码,构造了一个函数,希望这个函数的作用是使形参值-1。
为什么普通的函数(我也不知道怎么称呼)改变不了形参a,b的值,当改为指针做形参就可以改变呢?
图一为不可改变;图二为改进后

img

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-09-03 08:58
    关注

    void f(int m,int n) 函数形参为值传递,这两个参数的作用域就在这个函数体内,在函数体内对两个参数值的改变,只在这个函数体内能起作用,当函数执行完返回到主函数时,这两个参数就被释放了,我们就找不到它了。
    void f(int *m,int *n) 函数的形参为指针,这两个指针指向了主函数中变量a b 的地址,在函数体内对两个指针 *m *n的操作,相当于就是直接对它们所指向变量的操作,当函数执行完返回到主函数时,这两个形参虽然被释放了,但对变量 a b 已经有了实质性的改变。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月3日
  • 创建了问题 9月3日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效