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

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

繁花如伊
TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
#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 關(guān)注
- 311 瀏覽
添加回答
舉報(bào)
0/150
提交
取消