[英]Returning a local pointer in C
const char* returnStr()
{
char time[40] = {"France"};
char* time1;
time1 = time;
return time1;
}
int main(int argc, char* argv[]) {
printf ("return String is %s\n",returnStr());
}
此代碼返回一些垃圾字符。 const char*
是否不足以返回本地char指針? 我也必須在函數中使用靜態方法嗎?
我也必須在函數中使用靜態方法嗎?
是。 const
只是返回值的限定符,向returnStr
調用者returnStr
信號, returnStr
他們不應修改函數的結果。 它不會更改time
的臨時字符。
當returnStr函數終止時,將釋放其堆棧幀-因此,任何本地指針指向的內容現在都是隨機數據。 如果要返回指針,則必須在堆上分配指針,例如malloc。
time
對象將僅存在,直到returnStr
運行。 一旦返回調用它的函數,它就消失了,指向它的任何指針都是無效的。 簡而言之,在C語言中,您無法從函數返回數組,只能返回指向一個數組的指針。 這就是為什么標准庫C函數根本不分配字符串的原因,您必須傳遞一個字符串並指定它的大小,它將填充它或出錯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.