3 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
你的P是個(gè)數(shù)組,然后是局部變量,在GetMemory函數(shù)中有效。
函數(shù)結(jié)束以后,數(shù)組內(nèi)存會(huì)被系統(tǒng)回收。你雖然返回了P,但是返回的p實(shí)際上是個(gè)指針。指向已經(jīng)被回收的內(nèi)存Hello!\n。所以不會(huì)打印出什么東西的。
你要打印出東西就必須在主函數(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);
}

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
沒出錯(cuò),但內(nèi)部函數(shù)如果是局部的,可能你想它返回的值會(huì)出現(xiàn)丟失~
- 3 回答
- 0 關(guān)注
- 299 瀏覽
添加回答
舉報(bào)