程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言的返回值返回到什麼地方了?

C語言的返回值返回到什麼地方了?

編輯:C語言問答

C語言的返回值返回到什麼地方了?

最佳回答:

這個是運行時存儲空間的問題,在你調用的一個函數的時候。有一個叫做活動記錄的概念。以下是活動記錄的概念:

一個過程的一次執行所需信息的管理,是通過使用一個所謂活動記錄的連續存儲塊來實現的。在PASCAL和C語言中,我們通常采用以過程為單位的動態存儲分配方案。即:當一個過程被調用時,就把它的活動記錄推入運行時存儲棧的棧頂,而在控制返回調用程序時,再從棧頂彈出相應的活動記錄。

  活動記錄中各種域的作用如下:

  (1) 臨時變量域——用來存放目標程序臨時變量的值,如計算表達式時所產生的結果;

  (2) 局部數據域——用來存放過程本次執行中的局部數據、簡單變量以及數組內情向量等;

  (3) 機器狀態域——用來保存在調用一個過程之前有關機器狀態的信息,其中包括各種寄存器的當前值和返回地址等;

  (4) 任選的存取鏈——為訪問其它活動記錄中所存放的非局部數據提供鏈地址(這在PASCAL語言中是需要用到的);

  (5) 任選的控制鏈——用以指向主調過程的活動記錄;

  (6) 實在參數——用於存放主調過程為被調用過程所提供的實在參數信息(在活動記錄中,我們列出了實在參數的存放空間,但是為了提高效率,有時參數是通過機器寄存器來傳遞的);

  (7) 返回值域——被調用過程用來為主調過程存放返回值的域。

  每個活動記錄都可分為定長部分和可變部分。定長部分用來存放那些在編譯時就能確定其體積的量,如簡單變量、常界數組等;可變部分用來存放只有在運行時,才能確定其體積的量,如可變數組、動態指針等。雖然只有在運行時,才能為這些可變體積的數據在活動記錄的可變部分分配其存儲空間,但在編譯時卻能產生通過活動記錄的首地址(一般用一個指示器指示)來訪問它們的目標代碼,這是因為在該活動記錄的定長部分,已設定了存放確定其體積的有關信息的域(如數組的內情向量),而這些域在活動記錄中的相對位置是恆定的。

裡面一個是返回值域,就是當時開辟活動記錄是的一塊空間,希望對你有幫助

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved