SoS:各位老哥帮帮小弟啊~~~~~~~

ioi2000 2001-08-11 07:14:45
小弟是c的初学者,有如下问题请教如何解决:

#include "string.h"
#include "stdio.h"
char *strcopy(char str1[],unsigned int st,unsigned int en)
{
char (*str2)[];
...
return(*str2);
}
void main()
{char s[]="0123456789ABCDEF";
char rs[100];
rs=strcopy(s,2,9);/*出错显示“Lvalue required”*/
}
请问是什么出错,如何解救啊?
(Turbo C++ 3.0)
...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gigix 2001-08-11
  • 打赏
  • 举报
回复
关键是这里:str2是一个数组名(当然你没有指定数组的大小,这很危险的),也就是说,str2是一个指针,你的函数也是要返回指针,所以你应该写return str2;你原来的写法(return *str2)实际上返回的是什么?是对str2做dereference之后的结果,也就是该数组的第一个元素,当然要出错了。
另外,千万不要再写这样的函数了。不要返回函数局部对象的指针,这样是错误的。你可以想想:str2在出了strcopy函数的作用域之后就被销毁了,你得到的指针是undefined的;如果你在函数内开辟空间,还可能出现内存泄漏。理由在More Effective C++里面有讲,可以去看看。
windindance 2001-08-11
  • 打赏
  • 举报
回复
不懂你是什么意思。
该程序很多错误。
return(*str2); //str2分配内存没有?
rs=strcopy(s,2,9);//rs 是数组类型,而strcopy返回指针类型。

70,036

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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