您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 址传 >

C语言关于地址传递与形参实参的问题

发布时间:2019-07-08 11:27 来源:未知 编辑:admin

  当执行到shuchu函数的时候,main函数的变量a所占的存储单元是否就释放了?如果是,那把a变量的地址传过shuchu函数后,a变量可以认为不存在了吗,那怎么能够通过*p来输出a变量的值(即3)呢?

  —————————————————————————————————————————————

  我知道第一个程序是可以输出3的,,但我的第二个程序,同样也是为了输出3,但得不到结果,结果是

  一个系统给的任意的数,第二个程序我没有在主函数定义一个变量3,而在一个shuru函数定义变量a,传a的地址给主函数,然后主函数用一个指针变量x接受,再把x做实参个shuchu函数,,,如果说shuru函数把地址传给主函数时候,a的存储单元被释放了,那,第一个程序不也同样如此吗?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部在main函数中,变量a的生存周期是整个函数,当传递参数时,把a复制了一份,传递的只是复制后的a,所以*p输出的还是a的值。

  第二个函数中。shuru函数是个很错误的做法,他返回了局部变量的地址,当shuru函数结束时,函数所占资源都被系统收回,此时变量a已经被释放了,指针x所指地址确实是变量a的地址,但是该地址的内容已经不确定了,所以数据无法预知。

  但第二个代码中,shuru()函数返回a的地址后,a所占的空间被释放,所以shuchu(x)是一个随机值。

  }追问一般什么情况下变量会释放或者不释放呢?追答动态申请的内存需要手动释放,比如 malloc对应free new对应delete;

  展开全部x=shuru();//shru中的a是一个局部变量,结束已经释放,

  展开全部一个局部变量的生命周期仅仅存在于一对花括号之内。理解理解,欢迎追问。追问一个变量在主函数内,当主函数把这个变量的地址作为实参传递给一个子函数时候?那是不是这个主函数内的变量就相当于不存在呢,,,那子函数如何能够通过*p这样的形式输出这个主函数变量的值呢(我的理解是这个变量已经释放所谓的存储单元了,就不可能在保持一个值了吧?)?追答局部变量的生命周期在花括号之内,那么主函数中定义的局部变量肯定实在主函数运行完才释放的,而子函数内定义的局部变量也会在调用子函数完毕就释放,所以子函数中自动分配的变量不能在主函数中使用,而主函数中定义的变量可以通过传址给子函数让子函数来访问主函数中的变量。不懂继续问。最好闻细一点,越细越好。

http://abetterapp.com/zhichuan/243.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有