| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖
标题:CHAR*问题
只看楼主 加入收藏
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
 问题点数:0 回复次数:3 
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
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

a的地址怎么会会变?

a的类型是一个指针,它同样有一块内存来存储它

a++只是a指向的地址加,有点像是a的值加了,值加了地址怎么会变呢?

如果还是没明白,我举个例子。你把指针类型的a就看成整数类型的i,也就是

int i = 10;

cout<<i<<&i;

i++;

cout<<i<<&i;

你会看到,输出值变成了11,但是i自己的地址怎么会变呢。


天行健,君子以自强不息!!QQ:68660681
2007-08-09 23:09
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
这样的...
祭出ASCII大法...

*----* *-------*
|指针|-------->|ABCDE |
*----* *-------*
地址1 另外的地址...


所以指针的地址不会变...变的是那根针...(就是存在地址1里面的内容)

女侠,约吗?
2007-08-10 13:35
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 

谢啦~现在大概明白了~


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



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

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