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

#include <iostream>
char*GetMemory(){
char p[]="Hello!\n";
return p;
}
void main(void){
char *str =NULL;
str=GetMemory();
printf(str);
} 哪里有错啊?

狐的传说
浏览 235回答 3
3回答

Helenr

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

繁花如伊

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

幕布斯7119047

没出错,但内部函数如果是局部的,可能你想它返回的值会出现丢失~
打开App,查看更多内容
随时随地看视频慕课网APP