c++ 输入“I am a student.”输出“student. a am I”能编译通过,运行有问题 ,哪里有错?

2025-12-18 04:41:02
推荐回答(1个)
回答1:

同学,你对字符串、字符串常量、字符数组、c++的内存模型了解不到位。

你在main()中第一行:char *p = "I am a student.";

声明了一个指针p,指向一个字符串常量"I am a student."。所谓常量,就是不能改变的量,其存在内存中的常量区,而你下面的代码中试图改变这个常量的值(试图进行字符交换)。所以运行时异常。

把main()中第一行:char *p = "I am a student.";
改为:char[ ] p = "I am a student."; 试试。
这样p就是一个字符数组形式的字符串了,其存储在内存的栈空间,是可以改变的,当然不能超出其长度。