把全部分押上,不够以后在补,关于C++字符串和动态内存问题.
#include<iostream>
using namespace std;
#include<cstring>
struct stringy{ //定义一个结构
char *str;
int ct;
};
void set(stringy a,char str[]);//动态分配内存
void show(char p[],int i=1);
void show(stringy p,int i=1);
main()
{
stringy beany;
char testing[]="Reality isn't what it used to be. ";
set(beany,testing);
show(beany);
show(beany,2);
testing[0]='D';
testing[1]='u';
show(testing);
show(testing,3);
show("Done! ");
delete [] beany.str;
return 0;
}
void set(stringy a,char str[])//为a.str分配足够的空间来存储字符串
{
a.str=new char[strlen(str)+1
a.str=str;
//for(a.ct=0;a.ct<(strlen(str));a.ct++)
//*(a.str+a.ct)=str[a.ct];
//*(a.str+a.ct)='\0';
strcpy(a.str,str);
//strcpy(a.str,p);
//strcpy(a.str++,p++);
//delete [] p;
}
void show(char p[],int i)//显示字符
{
if(i==1)
cout<<p[0]<<endl;
else
{ for(int m=0;m<i;m++)
cout<<p[m];
}
cout<<endl;
}
void show(stringy p,int i)//显示字符
{
//char *ps=p.str;
if(i==1)
cout<<*p.str<<endl;
else
{
for(int m=0;m<i;m++)
cout<<*(p.str+m);
}
cout<<endl;
}
没有错误,就是一个警告,G:\vc6\beany.cpp(18) : warning C4700: local variable 'beany' used without having been initialized
运行的时候就不行了,运行不出来,请高手指点:) 小弟先谢谢!~>>>>