簡體   English   中英

在C中返回本地指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM