static char* Test()
{
char buf[] ="aa";
printf("%s\n",buf);
return buf;
}
int main()
{
char *p = NULL;
p = Test();
printf("%s\n",p);
return 0;
}
執行結果:

原因:
buf數組是局部變量,被存儲在棧區,Test函數執行完,內存會被釋放 ,p和buf具有相同的地址
修改:
static char* Test()
{
char *q ="aa";
printf("%s\n",q);
return q;
}
int main()
{
char *p = NULL;
p = Test();
printf("%s\n",p);
return 0;
}
執行結果:

原因:字符串“aa”存放在靜態存儲區,只有程序結束,才會被釋放,p和q具有相同的地址
