C++将某一指定字符从一个已知的字符串中删除!
1个回答
展开全部
程序我运行过,可以运行但是有一些瑕疵,你的要求是“将某一指定字符从一个已知的字符串中删除”,但这个程序的缺点在于它会删除全部的指定字符,如你输入“good”,然后再输入“o”,结果是“gd”,这显然与删除一个指定字符的要求不符合。
下面是对你问题的解答:
1.字符串的删除函数中,if语句之后*q++=*p,这里的*p是指针里的第二个值吗?
答:*p是一个字符,p才是指针。
2.for语句第一条件为空具体是怎么执行下面的内容的?
答:for语句第一条件只在循环开始的时候用一次,用与给赋初值,可以省略第一条件。然后到第二条件进行判断,若第二条件为真时执行循环体里的语句,然后执行第三条件,再判断第二条件是否为真,若真继续执行循环体....以此类推
3. 还有就是主函数里的输出语句cout<<"The new string is: "<<str<<endl;这里直接输出str,但是str在函数调用中并没有改变啊,为什么指针的内容变成指针q的内容?
答:这里是输入str指针指向的地址的全部内容,str在程序开始指向内存的特定空间,里面存你的字符串,程序运行过程中,str的确没有改变,但是在调用函数的时候,同样指向这块内存地址的P和Q将这段内存地址里面的内容修改了。举个简单的例子,str是一把钥匙,可以开A号保险柜,保险柜里放的是美元,函数中传值好比用str又配了一把钥匙,我用配的钥匙把美元拿了一部分,虽然我没动str钥匙,柜子也还是那个柜子,但是美元确变化了。
希望能对你的问题有帮助
下面是对你问题的解答:
1.字符串的删除函数中,if语句之后*q++=*p,这里的*p是指针里的第二个值吗?
答:*p是一个字符,p才是指针。
2.for语句第一条件为空具体是怎么执行下面的内容的?
答:for语句第一条件只在循环开始的时候用一次,用与给赋初值,可以省略第一条件。然后到第二条件进行判断,若第二条件为真时执行循环体里的语句,然后执行第三条件,再判断第二条件是否为真,若真继续执行循环体....以此类推
3. 还有就是主函数里的输出语句cout<<"The new string is: "<<str<<endl;这里直接输出str,但是str在函数调用中并没有改变啊,为什么指针的内容变成指针q的内容?
答:这里是输入str指针指向的地址的全部内容,str在程序开始指向内存的特定空间,里面存你的字符串,程序运行过程中,str的确没有改变,但是在调用函数的时候,同样指向这块内存地址的P和Q将这段内存地址里面的内容修改了。举个简单的例子,str是一把钥匙,可以开A号保险柜,保险柜里放的是美元,函数中传值好比用str又配了一把钥匙,我用配的钥匙把美元拿了一部分,虽然我没动str钥匙,柜子也还是那个柜子,但是美元确变化了。
希望能对你的问题有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询