函式的形參與返回

2021-08-06 07:34:16 字數 1166 閱讀 3811

函式中形參與實參的傳遞實質:

函式在呼叫時,會把實參變數的值複製給形參變數,即實參與形參是兩個不同的變數。形參的變數在函式返回後釋放記憶體

①改變形參指標的值:

實參和形參的值都為記憶體位址,指向同乙個記憶體空間,當形參改變後,即形參指向的記憶體位址改變後,並不會影響到實參。

②改變形參指標指向的記憶體:

實參和形參的值都為記憶體位址,指向同乙個記憶體空間,當形參直接改變對應的記憶體空間後,即形參指向的記憶體位址對應的記憶體存放的內容改變後,同時影響到實參指向的記憶體位址存放的內容。

③即指標的引用 (class *&var)

實參和形參實際上是同乙個變數,指向同乙個記憶體空間

函式的返回實質就是,把返回的值複製乙個副本而已。

字串常量和字元陣列的區別 字串常量放在字串文字量儲存區,而字元陣列是每乙個字元都轉換為ascii碼。一般的來說,函式是可以返回區域性變數的,函式一般的操作是把區域性變數複製後返回給呼叫者,不能返回區域性變數的是指標,因為函式只是把指標複製後返回了,但是指標指向的內容已經被釋放了,這樣指標指向的內容就是不可預料的內容,呼叫就會出錯,具體還需要看指標指向的內容存放在哪個儲存區

char *p="hello world!"; 沒問題,返回的是字串常量("hello world!")的位址,指標指向的內容(存放在靜態區)在函式結束後還能正常訪問。 

char p="hello world!"; 有問題,返回的是區域性變數(陣列p)的位址,指標指向的內容(陣列p)存放在棧中函式結束後釋放記憶體

static char p="hello world!";沒問題,返回的是靜態區域性變數(陣列p)的位址,指標指向的內容(陣列p)陣列存放在靜態區在函式結束後還能正常訪問

函式返回全域性變數的迭代器(迭代器的實質是指標),函式結束後可以正常訪問迭代器指向的元素

函式的形參與實參

函式的引數分為形參 形式引數 和實參 實際引數 形參又分為,位置引數 預設引數 可變引數 關鍵字引數 形參使在定義函式的時候給出的 實參使在呼叫函式的時候給出的 1.位置引數 實參和形參的個數必須保持一致,最好按位置傳參,如果位置部隊硬就指定說明 2.預設引數 形參和實參可以不一致,如果不想使用預設...

javascript函式的形參與實參

形參,是在定義函式時使用的引數,目的是用來接收呼叫該函式時傳進來的實際引數。實參 是在呼叫時傳遞給函式的引數 例如function myfun a,b,c myfun 1,2,3 這裡a,b,c就是形參。1,2,3為實參。形參和實參是不同的變數,他們在記憶體中處於不同的位置,形參在函式執行結束時將被...

函式中的形參與實參

總結了兩個回答關於指標和單量傳入是值傳遞,函式執行後不會改變原來變數值 陣列是取了陣列的首位址相當於傳入的是實參,函式執行後會發生改變寫的非常非常清楚 在普通變數或下標變數作函式引數時,形參變數和實參變數是由編譯系統分配的兩個不同的記憶體單元。在函式呼叫時發生的值傳送是把實參變數的值賦予形參變數。在...