为了账号安全,请及时绑定邮箱和手机立即绑定

以下内容是关于#include <iostream>的代码语法,请问哪里出错了,求解释~

以下内容是关于#include <iostream>的代码语法,请问哪里出错了,求解释~

C++ C
狐的传说 2021-12-08 23:19:42
#include <iostream>char*GetMemory(){char p[]="Hello!\n";return p;}void main(void){char *str =NULL;str=GetMemory();printf(str);} 哪里有错啊?
查看完整描述

3 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

你的P是个数组,然后是局部变量,在GetMemory函数中有效。
函数结束以后,数组内存会被系统回收。你虽然返回了P,但是返回的p实际上是个指针。指向已经被回收的内存Hello!\n。所以不会打印出什么东西的。
你要打印出东西就必须在主函数就把str的内存分配好,并且用传址的形式传入GetMemory

查看完整回答
反对 回复 2021-12-12
?
繁花如伊

TA贡献2012条经验 获得超12个赞

#include <iostream.h>
#define NULL 0
char *GetMemory(){
char p[]="Hello!\n";
return p;
}
void main(){
char *str =NULL;
str=GetMemory();
printf("%s",str);
}



查看完整回答
反对 回复 2021-12-12
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

没出错,但内部函数如果是局部的,可能你想它返回的值会出现丢失~

查看完整回答
反对 回复 2021-12-12
  • 3 回答
  • 0 关注
  • 264 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信