今天写个代码,一直报错本来就是解个字符串的左旋问题,可是老报错,都快烦死了,后来在网上的到热心的网友的解答,豁然开朗!呵呵,,现在贴出来大家一起学习!
#include
#include
#include
using namespace std;
int main()
{
char *str=(char *)malloc(20*sizeof(char)); //给指针开辟内存第一种方法
//char a[20]; //给指针开辟内存第二种方法
//str=a;
//str=new char[20]; //给指针开辟内存第三种方法
//str="wudemiao"; //给指针赋值第一种方法
strcpy(str,"wudemiao"); //给指针赋值第二种方法(注意区别)
cout< cout< int N=strlen(str); int M=4; char ch; while(M--){ ch=str[N-1]; for(int i=N-1;i>0;i--) { str[i]=str[i-1]; } str[0]=ch; } cout< //delete str; //如果使用的第三种方法,千万别掉了 //掉了,就内存泄漏 return 0; } //需要解释一下的是,在我们为指针开辟内存时的上面说道 //的三种方法中,要注意的是记得使用delete str;避免内 //存泄漏。如果使用的是str="wudemiao";为这一句你把str //指针指向一个字符串常量,上一句创建的那20个字符串现 //在已经访问不到了,这是内存泄露 很严重的问题。后面又 //通过str指针去修改它引用的常量的常量,常量肯定是不能 //修改的,所以就出错了。但是使用strcpy(str,"wudemiao"); //strcpy()则生成了一个副本,这个副本是一个数组,自然 //是变量,所以无论你用哪种方法给指针开辟内存,如果你 //使用的是str="wudemiao"的话,那么str指向的就是一个字 //符常量,无论在C/C++中都是不能改变常量的值的。 摘自 wudemiao的专栏