c語言中形參與實參的關係
形參和實參的區別
形參出現在函式定義中,在整個函式體內都可以使用, 離開該函式則不能使用。
實參出現在主調函式中,進入被調函式後,實參變數也不能使用。
形參和實參的功能是作資料傳送。發生函式呼叫時, 主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。
1.形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時, 即刻釋放所分配的記憶體單元。因此,形參只有在函式內部有效。 函式呼叫結束返回主調函式後則不能再使用該形參變數。
2.實參可以是常量、變數、表示式、函式等, 無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。
3.實參和形參在數量上,型別上,順序上應嚴格一致, 否則會發生“型別不匹配”的錯誤。
4.函式呼叫中發生的資料傳送是單向的。 即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函式呼叫過程中,形參的值發生改變,而實參中的值不會變化。
5.當形參和實參不是指標型別時,在該函式執行時,形參和實參是不同的變數,他們在記憶體中位於不同的位置,形參將實參的內容複製一份,在該函式執行結束的時候形參被釋放,而實參內容不會改變。
而如果函式的引數是指標型別變數,在呼叫該函式的過程中,傳給函式的是實參的地址,在函式體內部使用的也是實參的地址,即使用的就是實參本身。所以在函式體內部可以改變實參的值。
以上轉自https://blog.csdn.net/mal327/article/details/6713010;感覺分析的非常透徹,感謝分享。
如這個例子:就是指標作為形參時,實參*s只是把地址傳遞給了形參*p,至於p指標變數的如何變化與S無關,除非p指標改變了實參所指向位置的記憶體單元中的數值,那麼訪問實參所得值也會隨之變化。
void func(char *p)
{
p=p+1;
}
int main()
{
char s[]={'1','2','3','4'};
func(s);
printf("%c",*s);
return 0;
}
輸出結果為1
並不是2
相關推薦
c語言中形參與實參的關係
形參和實參的區別 形參出現在函式定義中,在整個函式體內都可以使用, 離開該函式則不能使用。 實參出現在主調函式中,進入被調函式後,實參變數也不能使用。 形參和實參的功能是作資料傳送。發生函式呼叫時, 主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的資料傳送。 1
關於Java中形參與實參的理解
今天閱讀了一個寫的非常棒的博文,通過此博文再次複習了Java中引數傳遞的知識(即值傳遞與引用傳遞的區別)。參考網站http://www.cnblogs.com/binyue/p/3862276.html。下面我將通過次博文記錄自己的理解,還望能夠幫助再學Java或者複習Java的朋友們。 理解J
計算機二級-C語言-對二維數組數據進行處理。對文件進行數據輸入。形參與實參。
元素 首地址 clu 重難點 style 賦值 是否 code *** //函數fun的功能為:計算x所指數組中N個數的平均值(規定所有數都為正數),平均值通過形參返回給主函數,將小於平均值且最接近平均值的數作為函數值返回,並輸出。 //重難點:形參與實參之間,是否進行了值
c語言中形參和實參的區別?
形式引數和實際引數 函式的引數分為形參和實參兩種。在本小節中,進一步介紹形參、實參的特點和兩者的關係。形參出現在函式定義中,在整個函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作資料傳送。發生函式呼叫
Pyhton函數篇(一)之函數中的形參與實參
依然 tell 多個 存在 默認 urn 字符串 div 地址 1:什麽是函數 函數其實就是帶名字的代碼塊,用於完成一些具體的工作。如果我們在寫一段程序的時候,需要多次用到同樣的一個功能,如果每次都要重復寫相同的代碼,不僅會增加我們的代碼量,更會讓我們寫出的代碼讓別人看
java中的形參與實參
目的 ont nbsp 基礎 引用 很多 java size ava 看了很多的文章,稍微有一些的總結;對最基本的形參與實參有了一定的理解,雖然還是不夠深入。 1、基本概念 形參:全稱為"形式參數"是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳如的參
形參與實參(1)------函式形參與區域性變數在記憶體中的處理
首先,實現一個“交換兩個整形變數的值”的函式。由結果可知,這樣做並不能真正完成交換資料,手工分析如下:由上圖可見,Exchange()函式並沒有更改main()函式中num1和num2的值。在記憶體中的解釋如下:解釋:先將主函式中的變數入棧(這個棧,指的是:作業系統記憶體管理
C++ 形參與實參的傳遞
函式呼叫形參、實參的問題 函式呼叫時,引數分兩種 一種是送進去的引數,一種是想從裡面得到的引數。比如: ExternalRectangle((unsigned char*)(frame->imageData), ObjInfo,widthstep,alarm_flag
關於形參與實參
tro logs ios clas ron ret turn 參與 輸出結果 #include<iostream> using namespace std; void updateStruct(int number) { number++; }
Java 形參與實參
轉自:https://dailycast.github.io/Java-形參與實參/ 前幾天在頭條上看到一道經典面試題,引發了一些思考。也是寫這篇文章的導火索。 背景 請看題: public class Main { public static void
形參與實參之間的值傳遞
先說形參與實參的數值傳遞: 函式呼叫時將實引數傳遞給形參稱為引數傳遞。C語言中,引數的傳遞方式是“單向值傳遞”,形參和實參變數各自有不同的儲存單元,被呼叫函式中的形參變數值的變化不會影響實參變數值。 舉個例子 #include<stdio.h&
const 修飾形參與實參
最好將const看做引數的一部分,形參和實參保持一致,下面舉個例子來說明形參與實參在const修飾不一致的情況下什麼時候會出錯,什麼時候不會出錯,以及其中的原因。 #include <iostream> using namespace std; void str
函式呼叫時的形參與實參
大多數人在進行學習程式設計時,對於函式呼叫時函式時的傳遞的內容是一個頭大的問題。本人在學習後有了以下的見解請大家共同學習,若有失誤,請指出!基礎知識1.系統堆疊(即棧區域)和堆區域。 1.1、棧(Stack)是作業系統在建立某個程序時或者執行緒(在支援多
C語言中乘除法與移位關係
微控制器程式設計中移位運算比乘除法效率更高,當然用移位運算替代乘除法程式碼會有點晦澀。下面記錄下自己學習的內容以做備忘。 用移位實現乘除法運算 a=a*8; b=b/8; 可以改為: a=a<<3; b=b>>3; 說明: 除2 = 右移
Javascript函式形參與實參
形參,是在定義函式時使用的引數,目的是用來接收呼叫該函式時傳進來的實際引數。 實參:是在呼叫時傳遞給函式的引數 例如 function myfun(a,b,c){ ... } myfun(1,2,3); 這裡a,b,c就是形參。1,2,3為實
C語言中函數聲明、形參、實參
-s 函數返回 int 是什麽 變量 strong 返回值 pro ont 函數原型: 原型prototype是函數的聲明;描述了函數的返回值與參數; 函數原型說明了兩點: 1、該函數的返回值 2、該函數的參數及其類型 ++++++++++++++++++++++++++
C語言中函式宣告、形參、實參
函式原型: 原型prototype是函式的宣告;描述了函式的返回值與引數; 函式原型說明了兩點: 1、該函式的返回值 2、該函式的引數及其型別 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 函式的引數: 引數到底是什
C語言中函式傳遞(實參 形參)
形參:在被調函式形參表中的變數名、陣列名,該過程在被呼叫前,沒有為它們分配記憶體,其作用是說明自變數的型別和形態以及在過程中的作用。 形參可以是 合法變數名,陣列名 實參:從主調過程傳遞給被呼叫過程的引數值。實參可以是變數名、陣列名、常數或表示式。在過程呼叫 傳遞引
C語言中陣列指標 作為形參
2015 0605 在修改程式的過程中,看到兩種將陣列作為形參的方法,於是搜了一下,找了一下比較全面地介紹陣列指標的文章。 先寫下我遇到的兩種方式: 方式1: void filter_c(long double *,long double *,float *,int);//
c語言中命令行參數argc,argv[]詳解
[ ] 整數 argv 輸入 點擊 char main [1] 程序 main(int argc,char *argv[ ]) 1.argc為整數 2.argv為指針的指針(可理解為:char **argv or: char *argv[] or: char argv[][