1樓:匿名使用者
返回值是在堆疊裡分配的。在呼叫之前就已經把堆疊壓入,呼叫完成之後,返回值會放在呼叫時準備好的堆疊裡。返回後,堆疊彈出,主程式就可以訪問堆疊裡的返回值了。
是不是動態分配,要這樣考慮:
1. 如果返回值是一個值型的,如一個int型,一個結構體等,那這個變數不能算是動態分配的,因為這個地址是在堆疊裡,事先計算好的預留空間。內容是直接複製在堆疊本身裡面的。
主程式返回時,這個內容也會自動彈掉。
2,如果返回值是一個指標,那麼堆疊裡放的是一個字長的指標,而返回值本身,只能放在其他地方,如系統堆裡。這樣主程式退出後,被彈掉的只是這個地址,其內容卻不能釋放。
對於字串返回值,如下:
char [128] fun();
這樣的,就是一個棧分配的返回值。不過這樣的用法一般不會這麼做。這個棧還是沒有辦法使用。
char * fun();
這樣的,就是一個堆分配的返回值。你必須在函式返回時,動態分配一個新的串,把新串的指標返回。也不能把區域性變數返回出去,不然程式是錯的,雖然執行時大多數時間裡表現正常。
這種作法下,必須在主程式裡顯式地銷燬這個返回值的內容。
2樓:
是一個區域性變數的副本,程式結束時自動清除
當然是自動釋放的,有返回值就是函式,你函式定義的時候決定了他是動態的還是靜態的。無非是在記憶體裡開一塊區域,使用完釋放掉,如果有遞迴的話繼續開闢,直到遞迴結束
c++中的返回值指的是什麼?
3樓:匿名使用者
首先,c語言中的函式有兩種形式:1)有返回值,2)無返回值。有返回值的函式會把內執行的結果(容也就是你寫這個函式的目的)返回到主函式中。
沒有返回值的函式主要是為了完成某種任務(其實這是廢話,函式的功能就是為了完成某種任務。)而一般沒有任何值返回到主函式中(也可以通過在無返回值的函式中操作全域性變數來改變主函式中的變數的值)。函式宣告的方式是:
type functionname(type argument1,type argument2....type argumentn)
type 可以為任意的c語言中的資料型別。也可以為void(即無返回值)。
其次,main函式的前面可以為int也可以為void.因為main函式也是函式(廢話)。當這個函式執行完畢之後會返回給系統一個值,0表示正確(常)執行。
如果你寫void的話,編譯除錯的時候,編譯器會自動像系統返回一個值。
第三,在寫c++程式的時候一般寫:
int main()
c++中返回引用和返回值的區別
4樓:
通常的返回機制將返回值複製到臨時儲存區域中, 隨後呼叫程式將訪問該區域.
返回引用則程式則呼叫程式將直接訪問返回值.
通常引用將指向傳遞給函式的引用, 因此呼叫函式實際上是直接訪問自己的一個變數.
比如const int& fun (int& a, const int& b)
int x = 1, y = 2, z;
z = fun(x, y);
//等價於 fun(x, y); z = x;
而且返回引用不能返回函式內部的臨時變數, 因為該變數隨著函式的結束而銷燬, 返回值會毫無意義, 如
const int& fun (int& a, const int& b)
//該程式會崩潰, 因為變數c隨著程式的結束而銷燬, 繼而返回的c的同名物件毫無意義
5樓:嚴棠偉雨筠
如果返回值,那麼記憶體中只有兩個儲存該整形資料的單元,一個是函式中生成的被返回的整形資料,一個是接收以後的整形資料,而返回引用則只要一格單元來儲存這個整形資料,被返回的和接收到的都是同一個整形資料。
如何獲取c++類中的返回值
6樓:匿名使用者
#include
using namespace std;
class tretargle
;float tretargle::setdate()void tretargle::perim(float x,float y)
{z=(x+y)*2;
cout << "the perim is "<< z <
7樓:
這個不是要判斷,是要你事先規定。
你在寫函式定義的時候必須定義好一個函式的輸入輸入有哪些分別是什麼型別。
c++函式返回值是什麼意思,幹什麼的?
8樓:97樂於助人
因為主函式裡面呼叫了grade函式,而grade函式裡面有輸出語句,所以會有書上的結果。
並不是返回給了主函式值。
c語言函式返回值,c語言的函式返回值?
這個跟庫函式的定義有關。還有就是編譯器的差異。有些編譯器預設是非0為真,有些非 1為真。建議不要使用這麼簡單粗暴的辦法判斷。請使用c提供的標準巨集判斷。在 學的。呃。自己寫 寫多了自然就知道了 根據你的程式來看應該是一個void型,不過你這是一個交換資料函式,如果這樣傳進來,是修改不了原址的 而如果...
C 函式返回型別是引用的問題,C 函式返回值為引用型別時出錯!大神進!
引用就是變數的別名,返回c3的引用,返回的就是c3 c3被清除,再呼叫c3的函式,結果當然不正確 如果返回 i 後,i被清除,但是返回值已經被輸出了,結果是正確的 返回c型別,g函式返回 的是c型別的一個物件,雖然c3被清除,但是返回的物件還能呼叫get函式 你可以在c類中增加一個解構函式,除錯執行...
jquery ajax get方式返回值最大長度是多少
get方式抄返回和post方式返回值 襲,都是返回的網頁形式的數bai據.html 或 xml 或 json 等du.暫時沒看到最大限制.如果你zhi說dao的是傳送長度的話,http協議對url長度沒有限制,但是瀏覽器和http伺服器有.如ie是最長2083位元組.同樣http協議對post資料長...