|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码如下:
- #include<iostream>
- #include<cstring>
- using namespace std;
- class C{
- char *s;
- public:
- C(char *p=0){
- s=("This");
- for(int i=0;i<strlen(s)-1;i++)
- *s++;
- for(int j=0;j<strlen(p)-1;j++)
- *s++=*p++;
- *s=0;
- cout<<"拼接后的字符串为:"<<s<<endl;
- }
- void print(){
- int d=strlen(s);
- cout<<"逆序后的字符串为:";
- for(int j=d;j>=0;j--)
- cout<<s[j];
- cout<<endl;
- }
- ~C(){delete []s;}
- };
- int main(void){
- C test(" is a C++ program!");
- test.print();
- return 0;
- }
复制代码
本帖最后由 Croper 于 2019-12-15 15:40 编辑
- C(char *p=0){
- s=("This"); //问题1:1)为常量字符串添加非常量字符指针;
- for(int i=0;i<strlen(s)-1;i++) //问题2:strlen(s)不包含末尾0,你这样会少iwei
- *s++; //问题3:在使用strlen的同时改变s指向的位置
- for(int j=0;j<strlen(p)-1;j++) //同问题2
- *s++=*p++; //问题1:2)试图改变常量区的值
- *s=0;
- cout<<"拼接后的字符串为:"<<s<<endl;
- }
- ...
- ~C(){delete []s;} //问题1:3)试图删除常量区的数据
复制代码
|
|