1、值傳遞,創(chuàng)建變量x和y,x的值等于a的值,y的值等于b的值
10余年的吉安網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整吉安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“吉安網(wǎng)站設(shè)計”,“吉安網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
void Exchg1(int x, int y)?
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf(“x=%d,y=%d/n”,x,y)
}
void main()
{
int a=4,b=6;
Exchg1 (a,b) ;
printf(“a=%d,b=%d/n”,a,b)
}
2、地址傳遞,相當于建立了px和py兩個指向整型的指針,其值分別為a和b的地址
Exchg2(int *px, int *py)
{
int tmp=*px;
*px=*py;
*py=tmp;
print(“*px=%d,*py=%d/n”,*px,*py);
}
main()
{
int a=4;
int b=6;
Exchg2(a,b);
Print(“a=%d,b=%d/n”, a, b);
}
3、引用傳遞,x和y直接引用a和b,對a和b操作,相當于給a、b起了別名x、y
Exchg2(int x, int y)
{
int tmp=x;
x=y;
y=tmp;
print(“x=%d,y=%d/n”,x,y);
}
main()
{
int a=4;
int b=6;
Exchg2(a,b);
Print(“a=%d,b=%d/n”, a, b);
}
擴展資料:
printf用法:
printf()函數(shù)的調(diào)用格式為:printf("lt;格式化字符串gt;",lt;參量表gt;)。
其中格式化字符串包括兩部分內(nèi)容:一部分是正常字符,這些字符將按原樣輸出;另一部分是格式化規(guī)定字符,以"%"開始,后跟一個或幾個規(guī)定字符,用來確定輸出內(nèi)容格式。
參量表是需要輸出的一系列參數(shù),其個數(shù)必須與格式化字符串所說明的輸出參數(shù)個數(shù)一樣多,各參數(shù)之間用","分開,且順序一一對應(yīng),否則將會出現(xiàn)意想不到的錯誤。
比如:
int a=1234;
printf("a=%d\n",a);
輸出結(jié)果為a=1234。
實參必須要指明數(shù)據(jù)類型,而且實參和形參的數(shù)據(jù)類型必須一致。
主要原因,因為數(shù)據(jù)類型反應(yīng)了數(shù)據(jù)的意義,譬如,0x3f8ccccd這個十六進制數(shù),用int類型來描述它,它就是一個整數(shù),用float類型來描述它則為1.1。示例代碼如下。
#include?stdio.h
int?main()
{
int?i?=?0x3f8ccccd;
float?f?=?*(float?*)i;
printf("%d\t%f\n",?i,?f);
return?0;
}
事實上C語言中的數(shù)據(jù)類型,類似于平時說話的”語境“, 它表達了語言的意義,譬如:”謝謝你“和”謝謝你全家“, 謝謝是一個符號,但是不同的語境下有不同的意義。正是因為此,C語言不管是函數(shù)參數(shù)傳遞還是使用標識符進行運算,都必須指明其數(shù)據(jù)類型。
形參是一個變量,是在引用的函數(shù)中的變量
實參也是一個變量.是在主函數(shù)中的變量.
兩個變量的使用范圍不同.
形參只在子函數(shù)中使用,實參可以在主函數(shù)中使用.
上面,實參寫成100,是說,在形參用100代進去.
而形參只能是一個變量,用來吸收實參傳遞進來的值,以輸出結(jié)果.
從別人那復(fù)制來的,寫的挺詳細的,希望比你有幫助,不明白的可以M我
——————————————————————————
形式參數(shù)和實際參數(shù)
函數(shù)的參數(shù)分為形參和實參兩種。在本小節(jié)中,進一步介紹形參、實參的特點和兩者的關(guān)系。形參出現(xiàn)在函數(shù)定義中,在整個函數(shù)體內(nèi)都可以使用,離開該函數(shù)則不能使用。實參出現(xiàn)在主調(diào)函數(shù)中,進入被調(diào)函數(shù)后,實參變量也不能使用。形參和實參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時,主調(diào)函數(shù)把實參的值傳送給被調(diào)函數(shù)的形參從而實現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。
函數(shù)的形參和實參具有以下特點:
1. 形參變量只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時,即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。
2. 實參可以是常量、變量、表達式、函數(shù)等,無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先用賦值,輸入等辦法使實參獲得確定值。
3. 實參和形參在數(shù)量上,類型上,順序上應(yīng)嚴格一致,否則會發(fā)生類型不匹配”的錯誤。
4. 函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化。
【例】可以說明這個問題。
main()
{
int n;
printf("input number\n");
scanf("%d",n);
s(n);
printf("n=%d\n",n);
}
int s(int n)
{
int i;
for(i=n-1;i=1;i--)
n=n+i;
printf("n=%d\n",n);
}
本程序中定義了一個函數(shù)s,該函數(shù)的功能是求∑ni的值。在主函數(shù)中輸入n值,并作為實參,在調(diào)用時傳送給s 函數(shù)的形參量n( 注意,本例的形參變量和實參變量的標識符都為n,但這是兩個不同的量,各自的作用域不同)。在主函數(shù)中用printf 語句輸出一次n值,這個n值是實參n的值。在函數(shù)s中也用printf 語句輸出了一次n值,這個n值是形參最后取得的n值0。從運行情況看,輸入n值為100。即實參n的值為100。把此值傳給函數(shù)s時,形參n的初值也為100,在執(zhí)行函數(shù)過程中,形參n的值變?yōu)?050。返回主函數(shù)之后,輸出實參n的值仍為100。可見實參的值不隨形參的變化而變化。
fun1(w);//fun1(char *w);
實際參數(shù) w 本身就已經(jīng)聲明了為char *類型,在實際的函數(shù)調(diào)用時,從語法上不允許用fun1(char *w); 只能直接把實際的量 w 作為參數(shù),提供給函數(shù),調(diào)用函數(shù):fun1(w);