作者althon (嘿嘿...)
看板C_and_CPP
标题[问题] 字元指标问题
时间Thu Jan 21 15:23:47 2010
遇到的问题: (题意请描述清楚)
刚刚爬文看一下字元指标相关问题
也看了新手十戒~
产生了疑问>"<
1.如程式中,ptr原本内容是old,後来设定成new
我之前一直以为不行>"< 因为ptr是字元常数指标
还是我误会了,仅是没办法一个一个字元去改????
2.爬文看有人这样写,当时我吓到...
ptr="new",我以前不知道有这个用法,因为ptr是位址,怎麽塞一个"new"给它?
还是说ptr是重新指向另一个字串new的开头???
3.原本想说来看一下ptr所指向的位址,发现C++没办法耶>"<
因为cout << ptr ; 就直接印出ptr所指向的内容>"<
不好意思,又要麻烦各位,我太嫩了>"<
开发平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev-C++
有问题的code: (请善用置底文标色功能)
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
char *ptr="old";
cout << ptr << endl;
ptr="new";
cout << ptr << endl;
system("pause");
return 0;
}
补充说明:
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.136.211.19
1F:→ james732:3. 请用 cout << &ptr; 01/21 15:28
2F:推 LPH66:1. 的确如此 2. 正确 01/21 15:37
3F:→ LPH66:3. cout << (void*)ptr; 01/21 15:38
4F:→ LPH66:一楼印的是 ptr 所在位址而非指向位址 01/21 15:38
5F:→ james732:确实 我搞错了 orz 01/21 15:40
6F:推 VictorTom:其实我觉得从文字的描述就可以看出一点误解, 当然也可能 01/21 15:46
7F:→ VictorTom:是口误就是了. 01/21 15:46
8F:→ VictorTom:ptr是一个指标, 记录的是位址, 而非ptr是一个位址; 01/21 15:47
9F:→ VictorTom:因此, 你是把ptr重新指向另一个位址, 即"new"所在的位址 01/21 15:48
10F:→ VictorTom:而不是'塞一个"new"给它'. @_@" 01/21 15:49
11F:→ VictorTom:後续2.3.的测试过程, 用3F L大的方式就能如你所想的测出 01/21 15:52
12F:→ VictorTom:来了:) 01/21 15:52
13F:→ althon:谢谢V大和L大,我了解了~ 另外,我文字表达比较粗鲁一点~哈 01/21 15:54
14F:推 VictorTom:其实, 是小弟我自己以前也在板上看到类似的问题後才搞懂 01/21 16:11
15F:→ VictorTom:char *s="abc"; s="123"; 是合法的, 以前都没想到...orz 01/21 16:12
16F:→ althon:呵~ 01/21 16:16
17F:→ tinlans:warning: deprecated conversion from string constant to 01/21 19:54
18F:→ tinlans:'char*' 01/21 19:54
19F:→ tinlans:用 const char * 才对。 01/21 19:54