日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

返回局部变量或临时变量的地址_C++的函数不可以返回局部变量的指针

發布時間:2024/2/28 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 返回局部变量或临时变量的地址_C++的函数不可以返回局部变量的指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多童鞋在編寫函數返回指針的時候,常常會出現一些列內存錯誤。當然這可能是很多原因造成的,但是有一個原因就是返回的是局部變量的指針。先給出結論C++的函數不可以返回局部變量的指針。

首先要明確局部變量的指針與局部指針變量的區別:局部變量的指針,若非static,則作用域僅為函數本身,在return之后即被釋放,也即指針指向一個無效變量,因此會造成程序崩潰;而局部指針變量則不同,盡管指針變量本身的生命期在return之后也結束,但只要其指向對象有效,其地址也是有效的。因此在返回指針時,一定要確保指針指向的變量是有效的(全局的)。

下面是返回局部變量的指針的例子:

#include <iostream> using namespace std; char* func1() {char str[20] = "hello,world!";char* t1 = str;return t1; } char* func2() {char* t2 = "hello,world!";return t2; } int main() {cout << func2() << endl;cout << func1() << endl;system("pause");return 0; }

上面的程序中func2可以輸出結果,func1無法輸出正確的結果。但是由于二者都是返回局部變量的指針,因而都是不對的。那如果我們一定要輸出函數里面定義的變量的指針呢?我們可以將變量定義為靜態類型(static)??梢詫⑸厦娴拇a的func1改寫為:

#include

編譯并運行上面的代碼,即可獲得相應的結果。這是因為static類型的變量在程序結束之后才釋放其內存。

總結

以上是生活随笔為你收集整理的返回局部变量或临时变量的地址_C++的函数不可以返回局部变量的指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。