| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 698 人关注过本帖
标题:文件指针读取文件内容的时候,指针的地址一直没有改变?
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我说你入魔道,是指居然去看FILE结构的_ptr指针。如果你平时有看我的帖,就会看到我贴过好几次《C标准库》手册的资料,有反复告诫不要“偷窥”FILE内部用法的内容,而你现在却像掌握屠龙刀一样欣喜。

授人以渔,不授人以鱼。
2015-06-06 12:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
再贴一次:

图片附件: 游客没有浏览图片的权限,请 登录注册

授人以渔,不授人以鱼。
2015-06-06 12:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C/C++有一个缺陷,就是把头文件(.h)公开出来让二次开发的程序员看到某些本不应被看到的内部信息,这也是C#和Java废除.h机制的主要原因。有些时候,看一看别的(基于C的)语言自述与C/C++的联系和区别,会懂得更多,反过来也是对C/C++的更深入理解。

通过stdio.h偷窥到FILE结构,其实并不是好主意。

授人以渔,不授人以鱼。
2015-06-06 12:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我曾经说过FILE* fp这样的声明,fp实际上就是句柄,得到某些技术“大牛”的嘲笑,说只有HANDLE才是句柄,那就是读书不化的典型。fp不是(普通的)指针,这是必须要明白的!

授人以渔,不授人以鱼。
2015-06-06 13:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不妨开动脑筋想一想:既然FILE* fp的fp是指针,那么它所指向的对象空间在哪里分配?我们看到有malloc()的代码吗?如果对象在栈中,为什么文件对象储存的数据可以跨函数使用?文件I/O为什么要求手动fclose(fp)?答案很明显:对象在堆上,并且所有内部字段(通俗的称呼叫变量)是有内在逻辑代码控制的,不是你看到变量的名字和类型那么简单,乱改一个,都可能引起别的变量失去匹配导致文件数据破坏。你知道改动_ptr的指向后,需要连带做什么动作才对?你读到_ptr的地址然后解引用*_ptr又能如何?这些东西,不知道比知道更能保护自身。

[ 本帖最后由 TonyDeng 于 2015-6-6 13:25 编辑 ]

授人以渔,不授人以鱼。
2015-06-06 13:21
快速回复:文件指针读取文件内容的时候,指针的地址一直没有改变?
数据加载中...
 
   



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

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