C的字符串问题
本帖最后由 mysticality 于 2013-05-04 10:01:47 编辑
为什么打印的内容和预期不符呢?
#include <iostream>
using namespace std;
int main() {
cout << "ARRAY" << endl;
char c[20] = "hello world!\0";
c[0] = 'd';
for (int i = 0; i < 20; i++) {
cout << c[i];
}
cout << endl;
cout << "POINT" << endl;
char *pc = "hello world!";
*pc = 'a';
while (*pc) {
cout << *pc;
pc++;
}
cout << endl;
cout << "OVER" << endl;
return 0;
}
结果是
ARRAY
dello world!
POINT
为什么没有看到第二个循环打印的结果呢?
[解决办法]
代码写错了,应该这么写 :
char *pc;
pc=&a;
*pc="HEllo World";
接输出循环…
[解决办法]
char c[20] = "hello world!\0";
上述表示在计算机内存堆上分配字符数组,用字符串赋值初始化它,可以对其内容进行修改。
char *pc = "hello world!";
上述表示在计算机常量内存中申请一块区域存放这个字符串,然后用指针指向它,指向常量内存的指针是无法改变其指向的值的。
[解决办法]
这个问题常见于CSDN。。。
lz可以debug一下
看看pc所指向的位置
[解决办法]
应该是字符串字面值的关系
[解决办法]
不要企图修改字符串字面量!!!!
[解决办法]
http://wapwenku.baidu.com/view/de39690cf78a6529647d53cc.html?ssid=0&from=844b&uid=3A4DF534E68BDBA81670CCCA751E8C1A&pu=sz%401320_1001%2Cusm%400%2Cta%40iphone_2_4.1_3_534&bd_page_type=1&tj=wenku_3_0_10
这个讲的比较详细