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

Helenr
TA貢獻1780條經驗 獲得超4個贊
你的P是個數組,然后是局部變量,在GetMemory函數中有效。
函數結束以后,數組內存會被系統回收。你雖然返回了P,但是返回的p實際上是個指針。指向已經被回收的內存Hello!\n。所以不會打印出什么東西的。
你要打印出東西就必須在主函數就把str的內存分配好,并且用傳址的形式傳入GetMemory

繁花如伊
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);
}
- 3 回答
- 0 關注
- 303 瀏覽
添加回答
舉報
0/150
提交
取消