关闭

vc中的字符串

769人阅读 评论(0) 收藏 举报
VC++中,如果定义一个字符串,假设为a[30];定义一个b[30]=“”;那么当我们给a赋值的时候, 比如说:“123456789”,输出a到文件,将a清空,strcpy(a,b),输出a为空再次给a赋值,比如: “abcdef”,再次输入到文件的时候,就会发现:两次的输出为:123456789(第一次)这个结果毫无 置疑,abcdef789(第二个),在这里我们明明将a字符串清空,而且也显示出来a是空的但是输出到文 件的时候却出了问题。 我觉得这是因为:当我们定义一个字符串的时候,在内存中给a分配了一个存储空间,在这个存储 空间中,当我们第一次赋值的时候存储的是:123456789,将a清空后显示的是一个系统缓存中的a, 为空字符串,当我们再次赋值给a的时候,我们再次访问到a的真实内存,比如说赋值abcdef给 a,则,a-f将内存中字符串a的1-6所占用的地址空间的内容改写,替换掉了,但是,后面的7 89却仍然在内存中,没有丢失。   其实磁盘的恢复也应该是如此,我们从磁盘上删除某个文件的时候,只不过是将它的一个指针,删 除,其文件内容还没有从磁盘删除,除非,在原来的文件所在的地址写入了新的信息,所以,我们完全 可以以此为理论依据,进行数据恢复(不慎删除的重要文件,数据),Bzdcopy,等一些文件恢复工 具。应改就是如此工作的。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1027次
    • 积分:18
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档
    阅读排行
    评论排行