|
我写了一段这样的程序
char * z = new char[6];
z = "abcde";
for(int k=0; k<5; k++)
{
cout<<hex<<&z+k<<endl;
cout<<*(z+k)<<endl;
}
delete [] z;
前面运行都挺正常,然后到了delete [] z;那儿,就运行不下去了,这是什么原因啊?我估计是跟那个const有点关系,请各位帮帮忙。
然后呢,为了把这段程序运行下去,我这样写了:
char z[] = {'a','b','c','d','e'};
for(int k=0; k<5; k++)
{
cout<<hex<<&z+k<<endl;
cout<<*(z+k)<<endl;
}
不用delete了,就没有错了,但我突然发现一个奇怪的现像。这是它的输出结果:
0012FF24
a
0012FF29
b
0012FF2E
c
0012FF33
d
0012FF38
e
他们的内存位置每个怎么相差五位呢?我原来的试验都是相差四位的呀,一个计算机字长不是四字节吗?这是为什么?
|
|