| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 475 人关注过本帖
标题:局部变量注销的问题
只看楼主 加入收藏
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
结帖率:70.59%
收藏
已结贴  问题点数:10 回复次数:5 
局部变量注销的问题

#include"stdio.h"
void main()
{
int * a(int,int);
int *one,two=2,three=2;
one=a(two,three);
printf("%d\n",*one);
}
int * a(int x,int y)
{
int x1;
x1=x+y;
int *p;
p=&x1;
return(p);
}

p指向的是一个x1的地址,但是程序运行的时候还能准确的输出4。 在int * a(int x,int y)返回值的时候X1都已经注销了。为什么p指向的值还能正常输出。 运行了很多次都是一样。排除偶然。
搜索更多相关主题的帖子: return include 
2012-10-06 20:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
先说两个问题 一个是 你写代码得有缩进啊。。 再一个 C是区分大小写的 x1 X1 不一样 得注意啊。。

至于能返回 其实没什么大不了的 因为还在堆栈上 但这些东西是不能再用的 因为不好说一定成功 这跟编译器 编译参数有关系的 只能说 在你用的硬件和编译器之上是可以的
2012-10-06 20:51
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
多说一句就是 不光是堆栈啦 堆也就是用mallco分配的 也不见得释放后立马就没了

所以 释放/销毁/注销/删除 不代表一定就没有了 举个类似的例子 硬盘上的文件删除了不一定就没 可能在回收站里 也可能虽然删除了但没有抹去 只不过是加了一个删除的标记罢了 有一位明星就不懂这个结果闯了大祸

为啥这样设计呢 还是速度考虑 如果删除文件后默认把那块空间抹去 别说过去的硬件了 就是现在的普通硬盘 也可能要几秒钟甚至更长 所以这个设计是合理的 至于带来的后果嘛 小心避免就好了

对于这个特性 特定的情况下可以利用 比如那位明星的照片。。。 但一般不要在自己写的代码中用这种东西 你肯定不希望自己的**照片泄漏罢


[ 本帖最后由 zklhp 于 2012-10-6 21:03 编辑 ]
2012-10-06 20:57
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
收藏
得分:0 
多谢您。

还想请教您一个问题,  我是一个想自学 C的新手,这段时间由于其他事件没有坚持每天看C了。很多东西又很陌生了。

我现在基础的C已经看完了,我想有更好的进展程度,但是我也不知道怎么更好的提高, 看那些很长的代码又看不懂。只能看懂一些比较简单的程序。想请教您。我下一个学习的重点应该是什么。
2012-10-06 21:03
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用飘青在2012-10-6 21:03:42的发言:

多谢您。

还想请教您一个问题,  我是一个想自学 C的新手,这段时间由于其他事件没有坚持每天看C了。很多东西又很陌生了。

我现在基础的C已经看完了,我想有更好的进展程度,但是我也不知道怎么更好的提高, 看那些很长的代码又看不懂。只能看懂一些比较简单的程序。想请教您。我下一个学习的重点应该是什么。

考虑一下这个问题:您学习C语言的目的是什么

认清目的才能找到前进的方向 你上面没说目的所以我不好说

可能的方向有

1 学其他主流的开发语言 比如Java C++ 有C的基础会好学
2 学算法与数据结构
3 学具体环境下的编程 比如linux下的C语言编程 比如windows环境下的C语言编程 这个就和具体的环境结合了
4 学硬件往单片机一类的东西上走
5 多写代码 多看代码 提高C语言水平和能力
……

总之 路是很多的 关键看你想干什么。。
2012-10-06 21:09
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
收藏
得分:0 
就目前的想法是2和4及5
2012-10-06 21:13
快速回复:局部变量注销的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018455 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved