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)
望大家踊跃帮小弟解决这个问题