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具有相同的地址