请问下边的代码为什么编译无法通过呢

左大神在这 2008-03-09 05:02:35
#include <iostream>
#include <string>
using namespace std;

char *getMemory( void )
{
 char point[] = "hello world"; //这行报编译错this character is not allowed in an identifier
 return point;
}

void testCode( void )
{
 char *str = NULL;
 str = getMemory();
 printf( str );
}
大家帮我修改下,谢谢.
...全文
144 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxjlan 2008-03-10
  • 打赏
  • 举报
回复
char *getMemory( void )
{
 char point[] = "hello world"; //这行报编译错this character is not allowed in an identifier
 return point;
}

这里有错呀。。。point是在栈区的,这样返回,point会造成错误的。。。在getMemory函数执行结束以后就被释放了。
ttkk_2007 2008-03-10
  • 打赏
  • 举报
回复
你这段代码一定是从其他地方拷贝的,你把代码自己重新敲一遍,就不会有那个问题了
另外,你不要返回指向栈内存的指针

char *getMemory(void){
char *point = new char[12];
strcpy(point, "hello world");
return point;
}

void testCode(void){
char *str = NULL;
str = getMemory();
printf(str);
delete []str;
str = NULL;
}

int main()
{
testCode();
return 0;
}
星光伴月 2008-03-10
  • 打赏
  • 举报
回复
可以将point定义成静态的:
char * GetMemory(){
static char point[]="hello world";
return point;
}
zcl198715 2008-03-10
  • 打赏
  • 举报
回复
5楼的代码没有问题,但写的并不规范,在有点机子上可以没有正常运行!以下是规范的代码:
#include <iostream>
#include <cstring>
using namespace std;

char *getMemory()
{
char *point=new char[12];
strcpy(point,"hello world");
return point;
}

void testCode()
{
char *str = NULL;
str = getMemory();
cout<<str<<endl;;
delete str;
}
int main()
{
testCode();
return 0;
}
zcl198715 2008-03-10
  • 打赏
  • 举报
回复
好一个"半桶水"!那观点你老师这么说过的吗?
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;

char *getMemory( void )
{
 char point[] = "hello world"; //这行报编译错this character is not allowed in an identifier
//这里定义point为一个数组,没指定数组大小,当然不行,而且初始化方法也不对。

 return point; //point没固定地址,"hello word"存在随机地址之中,退出本函数后,可能会被其他数据覆盖
}

void testCode( void )
{
 char *str = NULL;
 str = getMemory();
 printf( str );
}
babala520 2008-03-09
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;

char *getMemory( void )
{
//char point[] = "hello world";
char *point=new char[12];
strcpy(point,"hello world");
return point;
}

void testCode( void )
{
char *str = NULL;
str = getMemory();
printf( str );
delete str;
}
void main()
{
testCode();
}

你返回的point 是一个临时空间,函数GetMemory()返回时这片空间就被回收了,所以你返回的point是一个垃圾地址,
还有函数调用是不能返回栈中的地址的!
不知道对你有没有帮助,
hastings 2008-03-09
  • 打赏
  • 举报
回复
你new一下,再strcpy一下,最后返回.
wp71105412 2008-03-09
  • 打赏
  • 举报
回复
同意楼上 ~
arong1234 2008-03-09
  • 打赏
  • 举报
回复
除了一些不可见字符的问题,还有这样返回point是不可以的
point是一个临时数组,函数返回就不存在了,你这样返回的指针是不得使用的
HengStar 2008-03-09
  • 打赏
  • 举报
回复
刚试验了一下好像是因为你输入的字符有问题,输入法?总之不能被编译器识别
你把以上重新手动在记事本里输入一次然后粘过来看看还没有错
内容概要:本文系统介绍了软件知识产权的基础知识,涵盖软件合法持有人的权利、软件著作权的行使方式(许可与转让)、保护期限、相关法律基础及典型真题解析。重点阐述了《中华人民共和国著作权法》和《计算机软件保护条例》作为我国软件著作权保护的两大法律依据,明确了软件著作权的客体范围(源程序、目标程序、文档),指出软件开发思想不受保护,并区分职务作品与委托开发作品的权属规则。同时讲解了专利权的地域性和先申请原则,以及商业秘密在软件保护中的应用。; 适合人群:从事软件开发、项目管理、知识产权管理等相关工作的技术人员与法务人员,以及准备软考或学习知识产权课程的学生。; 使用场景及目标:①帮助开发者明确自身在职务开发、委托开发中的权利边界;②指导企业合规使用软件并防范侵权风险;③辅助理解和应对软件著作权登记、专利申请、商业秘密保护等实务问题;④通过真题解析提升对法律法规的实际应用能力。; 阅读建议:本资料兼具理论性与实用性,建议结合具体工作场景对照条文理解,并重点关注历年真题部分以强化对关键知识点的掌握,尤其注意区分著作权、专利权与商标权的不同保护机制。
内容概要:本文提出了一种考虑极端天气下线路脆弱性的配电网分布式电源配置优化模型,并基于IEEE33节点系统通过Matlab代码实现。该模型综合评估极端气象条件对线路故障概率的影响,构建线路脆弱性指标,结合分布式电源(如风电、光伏等)的出力特性,优化其在配电网中的选址与定容方案。研究充分考虑系统潮流约束、运行安全性、负荷需求响应以及不确定性天气因素,采用先进的智能优化算法求解多维非线性规划问题,旨在提升配电网在极端事件下的供电可靠性与系统韧性。通过仿真验证,该模型能有效降低停电风险、提高可再生能源消纳能力,并增强电网应对突发灾害的恢复能力。; 适合人群:具备电力系统分析、优化建模与Matlab编程基础,从事智能电网、分布式能源规划、配电网可靠性研究及相关领域的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①用于极端气候条件下配电网抗灾能力的量化评估与规划决策;②指导分布式电源在配网中的科学布局与容量配置;③提升电网在不确定环境下的运行稳定性与自愈能力;④为电力企业制定应急调度策略与基础设施加固方案提供理论支持和技术工具。; 阅读建议:建议结合提供的Matlab代码进行仿真实践,深入理解IEEE33节点系统的建模方法、极端天气建模逻辑与线路脆弱性量化机制,重点关注目标函数构造、约束处理及优化求解流程,便于将该模型拓展应用于其他网络拓扑或灾害场景。

65,210

社区成员

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

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