关于指针和字符串的问题
char *ch;
ch="abc";
搞不明白ch里面应该存储地址,为啥"abc"能赋给ch?这是一个问题
接上面的代码加入cout<<ch; 为啥能输出"abc"?这是第二个问题
代码改为:
char *ch;
cin>>ch;
cout<<ch;
为啥就不行了,编译可过,但执行时提示程序错误,要关闭。
想知道原因,求高手解答。
[解决办法]
第一个ch = "abc",其实就是让指针指向"abc"字符串常量的地址,自然不会报错
第二个你对空指针进行操作
[解决办法]
1."abc"是一个常量字符串,也有地址的。char *ch = "abc";的意思就是将常量字符串的首地址(也就是字符a的地址赋给ch)。
2.因为ch指向一个常量字符串,故这个地址的内容不可修改,所以cin>>ch;是非法的。改成char ch[10];就可以了
[解决办法]
char *ch;
cin>>ch;