| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖
标题:CHAR*问题
取消只看楼主 加入收藏
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
 问题点数:0 回复次数:1 
CHAR*问题
先来看看下面的一段程序:

#include <iostream>

int main( )
{
char* a = "ABCDEF";
cout << a << " " << &a << endl;
a++;
cout << a << " " << &a << endl;
return 0;
}

输出结果:
ABCDEF 地址1
BCDEF 地址1

问题: 从输出结果可以看出, a的地址没变, 但是输出的a的数据, 却改变了(从ABCDEF->BCDEF).
这是为什么呢
?(问题1) 系统中, ++对于处理char类型的数据, 难道是把字符串的首位字符
由N变成N+1? 如果是这样的, 也就是说, 系统对原有数据进行了复制与覆盖. 如果是这样的话,
那么当使用a--时, 所输出的数据是无法估计的. 但是事实证明, 使用a--, 将会原样输出
ABCDEF. 如果说, 系统在复制与覆盖的时候, 使用另一变量来存放原来的数据. 但是, 如
过是这样的话, 那么系统岂不是向内存申请了2个存放空间
?(问题2)
还有1个问题, 就是sizeof(char)=1, sizeof(char*)=4, 但是"ABCDEF"不可能只用那char
所申请的空间存放, 而且事实标明, *a = "A" , *a != "ABCDEF". 那么ABCDEF是存放在
哪里的呢
?(问题3)

望大家踊跃帮小弟解决这个问题
搜索更多相关主题的帖子: CHAR 
2007-08-09 21:21
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 

谢啦~现在大概明白了~


2007-08-11 01:32
快速回复:CHAR*问题
数据加载中...
 
   



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

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