帮我看看这么写有问题没

pan7861 2007-03-27 06:29:15
程序如下:
void a(char* cp)
{
cp = new char[3];
cp[0]="abc";
cp[1]="ABC";
cp[2]='5';
}
void b(char* cp,int* np)
{
char* bcp;
a(&bcp);
np = new int[3];
for(int i=0;i<3;i++)
{
np[i]=atoi(bcp[i]);
}
}
void c()
{
char* ccc;
int* ncc;
a(&ccc);
b(ccc,&ncc);
delete []ccc;
delete []ncc;
}
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pan7861 2007-03-28
  • 打赏
  • 举报
回复
我直接用数组做参数可行么,实际上我a函数是想通过参数返回一个char 数组或者指向该数组的指针,在函数中对该数组赋值,b函数是想通过执行a函数得到的char 数组或指向该数组的指针做为参数传入,然后返回一个int 数组或指向该数组的指针.
对于char数组赋值是我写错了,应该是char[0]='4';,char[1]='6';,char[2]='9'
liran1229 2007-03-27
  • 打赏
  • 举报
回复
void a(char* *cp) //如果你想输入一个字符串的话可以这么改
cp = new char*[3];
cp[1]="ABC";
cp[0]="abc";
cp[2]="5";
}
xlbdan 2007-03-27
  • 打赏
  • 举报
回复
void a(char* cp) //你是想通过这个参数来申请一块内存,那要改为:char *&cp
{
cp = new char[3];
cp[0]="abc"; //cp[0]只有一个空间,改为cp[0]='a';
cp[1]="ABC"; //cp[1]='b';
cp[2]='5'; //cp[2]='c';
}
void b(char* cp,int* np) //这个参数也有上面的错误,要改为(char* cp,int *&np)
{ //这样,np那里才能传得回去

char* bcp;//这是不是多余了,完全可以直接用cp

a(&bcp); //因为a里面的参数是指针的引用,这里改为a(bcp),你原来的方法
np = new int[3]; //是不行的,要求的是形参那边是引用,你这边取地址没有用.达不到
for(int i=0;i<3;i++) //你的目的
{
np[i]=atoi(bcp[i]);
}
}
void c()
{
char* ccc;
int* ncc;
a(&ccc); //同上,改为a(ccc);
b(ccc,&ncc); //改为b(ccc,ncc);
delete []ccc; //实际上你这里还是有内存的泄露,因为在b里面调用了一次a,
delete []ncc; //b运行结束得到的ccc是指向一个新的内存的指针,原来ccc指向的那块
} //已经丢失了.
MOTA 2007-03-27
  • 打赏
  • 举报
回复
CHAR类型的数组能赋值ABC?

似乎只有1个字母吧~!
pan7861 2007-03-27
  • 打赏
  • 举报
回复
这样行么,给参数分配空间我还真不知道怎么办,实际目的我是为了返回一个指向char数组的指针
void a(char* cp)
{
cp = new char[3];//
cp[0]="abc";
cp[1]="ABC";
cp[2]='5';
}
void b(char* cp,int* np)
{
char* bcp=NULL;
a(&bcp);

np = new int[3];
for(int i=0;i<3;i++)
{
np[i]=atoi(bcp[i]);
}
}
void c()
{
char* ccc=NULL;
int* ncc=NULL;
a(&ccc);
b(ccc,&ncc);
delete []ccc;
delete []ncc;
}
laiwusheng 2007-03-27
  • 打赏
  • 举报
回复
void a(char* cp)
{
cp = new char[3];//给参数分配空间?
cp[0]="abc";
cp[1]="ABC";
cp[2]='5';
}
void b(char* cp,int* np)
{
char* bcp;
a(&bcp);//bcp未初始化,能作实参吗?这样:char* bcp=cp;

np = new int[3];
for(int i=0;i<3;i++)
{
np[i]=atoi(bcp[i]);
}
}
void c()
{
char* ccc;
int* ncc;
a(&ccc);//未初始化
b(ccc,&ncc);
delete []ccc;
delete []ncc;
}

65,204

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧