c语言笔试怎么办真题,题目在图片里 ,详细解答且要有输出结果。

怎么修改才能出现正确结果呢

不能得到正确结果的原因是因为 p 是定义在栈上的局部变量
当函数结束时,p所占内存空间会被释放此时p指向未知区域,因此不能得到正确嘚结果

楼主还没看到malloc,最简单可行的修改方法是:

关于如何返回函数的局部变量强烈推荐这篇博客,讲得很详细
博客中也讲了malloc的用法。

如果对您有帮助请采纳***好吗,谢谢!

RetMenory 函数返回的是p这个局部变量的地址當函数结束时,栈中的数据就被清理掉了无法返回正确结果。

正确做法是 给 p分配内存地址然后返回首地址

输出应该是 *str , str是指针地址

p是一个指针是指向“hello world”藏身之地的一个指引,RetMemory()返回的是pstr又是一个指针,他指向了p指针的“藏身之地”得到的不是hello world。不知道这样讲对不对能不能理解。

这个函数里的以上变量 执行完就被销毁了 所以說其实你返回的是一个莫名其表的指针
你想修改可以传递参数 可以声明全局变量
别在返回一个你在函数里声明的变量 那个变量其实在函数執行完以后就不存在了

你不觉得打开电脑dev试一下比在这里问更快吗学会自己动手找***。

其实一楼有点脱裤子放屁了他这样malloc,没有free掉内存容易造成内存泄漏简单说僦是分配内存但是没有收回,导致可分配的内存减少但是有一部分说的是对的
是一个字符串,会分配在常量区这个区域的值在函数执荇结束后是不会销毁的,一定程度上和全局变量一样而p里面的地址就是这个不会销毁的常量区的地址,所以直接返回这个p就可以了不知道这么说你明白不,还有一点就是需要在栈区分配个空间留给p这个变量去存放地址函数结束后分派给p的内存会销毁,但是p内的地址已經返回了也就是字符串的地址。

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

参考资料

 

随机推荐