我很困惑我們如何能夠從函數返回字符串。從函數返回字符串c
char* someFunction()
{
return "Hello, World"
}
應該不是上述return語句拋出「函數返回局部變量的地址」和它是如何從功能不同:
char* newFunction()
{
char temp[] = "Hello, World";
return temp;
}
這實際上也給出警告如上所述。
我很困惑我們如何能夠從函數返回字符串。從函數返回字符串c
char* someFunction()
{
return "Hello, World"
}
應該不是上述return語句拋出「函數返回局部變量的地址」和它是如何從功能不同:
char* newFunction()
{
char temp[] = "Hello, World";
return temp;
}
這實際上也給出警告如上所述。
字符串文字具有靜態存儲持續時間。你可以返回一個指向字符串的指針,然後訪問該字符串,這是完全有效的和定義的行爲。
char* someFunction()
{
return "Hello, World"
}
在以下情況下,您將返回一個指向具有自動存儲持續時間的字符串的指針。自動存儲持續時間的對象在退出定義的塊後會被銷燬。所以在函數返回後訪問它是未定義的行爲。
char* newFunction()
{
char temp[] = "Hello, World";
return temp;
}
你需要做的第一案'爲const char *'真的 – Flexo
注意單詞「扔」往往指的是異常處理機制......這可能不是你的意思,因爲C沒有任何天生的支持。 – Kaganar
有一個現有的[問題](http://stackoverflow.com/q/1704407/168175),涵蓋了兩種情況之間的關鍵區別。 – Flexo