主函式和子函式 私有函式 巢狀函式

2021-07-02 04:00:21 字數 1212 閱讀 3457

同乙個指令碼檔案中若有多個函式,則分為主函式和子函式,每個m

檔案都要求有乙個主函式,它最先出現在該

m檔案中

,與檔案同名。主函式可以與該

m檔案外的其他函式相互作用,只要該檔案所在目錄屬於

matlab

搜尋路徑;子函式

subfunctions

的執行範圍

:只能與該

m檔案中的其他函式相互作用,卻不能被

m檔案之外的函式呼叫,子函式作為功能函式只是執行主函式的一部分工作。

私有函式:私有函式是主函式的一種。它唯一的特徵是它只能夠在乙個特定的限定函式群中可見。一般的matlab

函式是全域性可見的,而

private

函式只能被

private

資料夾所在資料夾中的函式呼叫。如果你想約束函式的訪問,或者當你選擇不讓外面看到你執行的是哪個函式的時候,這就很有用了。 私有函式駐留(放在)以專有名稱 

private

命名的子目錄下。他們只是對其父目錄中的函式是可見的。

巢狀函式:是在另一函式內部定義的函式,和普通的函式主要有以下幾點差別:

(1)函式必須以end

結束。只要某個

m檔案中使用的巢狀函式,則該檔案內所有的函式都必須以

end結束——無論該函式是否為巢狀函式。

(2)呼叫規則:

外層的巢狀函式的直接內層,例如varscope1

可以調nestfun1

,而nestfun1

可以呼叫

nestfun2

,但varscope1

不能調nestfun2;

有相同父函式的同層巢狀函式(本例不存在);

內層的函式可以呼叫任何外層的函式,例如,nestfun2

可以呼叫

nestfun1

和varscope1。

其他函式呼叫時,只能調最外面一層的函式(varscope1

),而不能呼叫調

nestfun1

和nestfun2。

(3)變數作用域:

通常,函式的工作區只對其自身可見,其他函式不能訪問。但對於巢狀函式而言,處於內層的函式可以訪問外層函式的工作區(例如,nestfun2

可以訪問

varscope1

的區域性變數

x),反之則不可以。 

Matlab的子函式和巢狀函式

主函式 1 乙個.m檔案只有乙個主函式,且正常情況下主函式函式名應該與檔名相同。test.m檔案 function m,n test x,y test function end子函式 1 如果有的函式很短就幾行 又不想多建立乙個.m檔案,且只針對某些函式使用。可以允許在乙個.m檔案中建立多個子函式。...

Matlab 主函式和子函式間接傳遞變數

在matlab一般可以通過函式的輸入和輸出介面來傳遞變數,但是有的時候,我們因為函式已經寫好,並在比較多的指令碼中被呼叫,此時再修改輸入介面的工作量比較大,如果可以通過其它方式傳遞變數,就可以省去很多的工作量。初步想了一下,可以通過兩種形式實現 在主函式中定義全域性變數 function main ...

關於子函式給主函式指標分配記憶體

典型的錯誤例子如下 在這個主函式的指標給子函式傳遞乙個指標,而在子函式中形參有開闢了一塊記憶體,此子函式的指標的記憶體裡儲存的位址與主函式是同一位址,即主函式的指 針和子函式形參的指標都指向同一塊記憶體的位址,但是在子函式裡,為子函式的指標申請了一塊空間,並不影響主函式的指標。因為子函式的指標又指向...