c 數組作為返回值注意


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM