當前位置:首頁 » 編程語言 » c語言函數實參到形參兩種方式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言函數實參到形參兩種方式

發布時間: 2022-04-28 08:05:22

1. 關於c語言里實參和形參傳遞

voidfun(inta,intb){

intt;

t=a;

a=b;

b=t;

}

確實執行了操作,但是操作結果無法返回到main()函數,因此結果不變.

可通過指針傳遞地址,改正如下(但是我不太明白你的程序的意思):

#include<stdio.h>

voidfun(int*a,int*b)

{intt;

t=*a;*a=*b;*b=t;

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

for(i=0;i<=10;i+=2)fun(&c[i],&c[i+1]);

for(i=0;i<10;i++)printf("%d",c[i]);

printf(" ");

getch();

}

2. c語言函數調用實參到形參傳遞的是值,那地址是怎麼傳遞的

首先,是實參調用形參.你說的地址傳遞其實和值傳遞差不多.比如max( &a, &b );這是實參int max( int *p, int *p2 )這是形參.比如實參,&a和&b都是取a和b的地址,又因為max()函數的形參是*p和*p2( *p和*p2被聲明為整型的指針 ),因為指針是存地址的,所以把a和b的地址賦給p和p2.下面是一個把a和b的值交換的程序./* ============================ 程序名:max.c 目的:用地址交換兩個變數的值. ============================ */#include int max( int *p, int *p2 ); /* 聲明函數 */ int main( void ){int a, b;scanf( "%d", &a ); /* 輸入兩個變數的值 */ scanf( "%d", &b ); printf( "a = %d, b = %d\n", a, b );return 0;}int max( int *p, int *p2 ){int temp; /* 定義一個臨時變數,為的只是交換 */temp = *p;*p = *p2;*p2 = temp; /* 己交換 */}

3. C語言函數實參與形參的結合方式有哪兩種

值傳遞 和 地址傳遞

4. 為什麼在c語言中形參和實參之間傳遞的只能是值傳遞

其實c語言有兩種形參和實參之間傳值方式,一種是傳值,一種是傳這個值的地址,但實際上地址也是一個值,對應計算機存儲空間上的編號,所以統稱為傳值。

5. 怎樣定義C語言函數中的參數(實參、形參)

不知道函數調用原理的話,很難說得清楚的。粗略的說在C中函數其實是分成三個部分,分別是聲明、實現和使用。聲明就是告訴C有這么個函數,實現就是這個函數的完整代碼,使用則是調用這個函數幫你做運算或者是做事情。為了讓函數能做更多的事情,就需要一種方法能向函數傳遞性息,最可靠、最方便的方法就是參數傳遞,C就是這樣做的。參數傳遞也不是簡單的一件事情,首先在調用者和被調用者之間得有個約定,大家約定好了參數放什麼地方,如何使用,這個就稱為調用約定。現在我們回過頭來看什麼叫實參和形參。由上面的敘述可以看到,函數其實有一定的獨立性的,參數是在調用約定下放在指定地方供函數使用的,在我們實現函數的時候,實際的參數是什麼我們還不知道,但我們知道有多少參數,分別是什麼數據類型的和放在什麼地方(順序),這個是由調用約定來保證的。我們知道的這些就是形式的或者說是邏輯的,我們在實現函數(編寫函數體)的時候需要給他們命名,以便使用,這些在函數實現的時候命名的形式上的參數就是形式參數,簡稱形參。而在實際調用發生的時候,調用者會將實際的參數放在約定好了的地方,這個實際參數簡稱實參。函數被運行的時候實參和形參形成了一一對應,對形參的操作就變成了對實參的操作。

對調用約定還有需要說明的就是,現在常用的調用約定都是傳值的,也就是說只是傳遞了一個副本,這樣做的結果就是你對形參的操作不會被傳遞出來。
是否可以解決您的問題?

6. 在C語言中,定義一個函數的形參和實參之間具體是如何進行參數傳遞的

主要有兩種:(1)值傳遞:在函數調用時,將實參的值復制一份傳遞到調用函數中,這樣,如果在調用函數中修改了參數的值,也不會影響到實參的值。(2)引用傳遞:與(1)相反,即會影響實參的值。如何區分它們呢?實際上,通常在定義函數時,如果參數為數組、指針或引用類型時,函數採用引用傳遞,否則採用值傳遞。

7. C語言規定,簡單變數做實參時,它和對應形參之間的數據傳遞方式是

答案是B,單向的值傳遞

簡單變數做實參時,相應的形參變數也是簡單變數,它們之間的數據傳遞方式是單向的值傳遞,即數據只能由實參傳到形參,形參值的改變不影響實參值的變化。

(7)c語言函數實參到形參兩種方式擴展閱讀:

形參和實參的特點:

1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。

2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。

3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。

4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上。

參考資料:網路——形參

8. C語言中實際參數和形式參數的設置及傳遞方式

C語言中實際參數(實參)與形式參數(形參)之間的傳遞方式有傳值和傳地址兩種函數調用方式。


下面通過舉例來說明實參和形參的設置方法以及傳值與傳地址的兩種函數調用方式。

值傳遞方式:

#include<stdio.h>
voidfun(inta,intb)//此處a,b為形參
{
a++;
b++;
}
voidmian()
{
inta=1,b=2;
fun(a,b);//按傳值方式調用函數fun,此處a,b為實參
printf("%d,%d ",a,b);//輸出a=1,b=2
}

地址傳遞方式:

#include<stdio.h>
voidfun(int*a,int*b)
{
*a=4;
*b=5;
}
voidmian()
{
inta=1,b=2;
fun(&a,&b);//按傳地址方式調用函數fun
printf("%d,%d ",a,b);//輸出a=4,b=5
}

9. C語言規定,調用一個函數時,實參變數和形參變數之間的數據傳遞方式是什麼

函數只有兩種傳遞方式:

1、值傳遞,又稱單向傳遞,只能把實參數值傳給形參 ,形參最後的結果不影響實參(形參改變大小 ,實參大小不變)。

2、址傳遞,通過指針,把實參的地址給形參,形參的大小可以影響實參。

(9)c語言函數實參到形參兩種方式擴展閱讀:

實參變數和形參變數之間的調用過程

1、函數的形參列於函數聲明中,在函數定義的函數體內使用,在未出現函數調用時,形參不佔內存中的存儲單元。

2、將實參的值傳遞給形參,當函數被調用時,實參列在函數名後面的括弧里,執行函數調用時,實參被傳遞給形參。

3、在執行函數期間,由於形參已經有值,可以利用其進行相關運算。

4、通過return語句將函數值帶回到主調函數。

5、調用結束,形參單元被釋放。實參單元仍保留並維持原值(值傳遞)。

10. c語言,關於函數調用時實參如何傳遞給形參

形參和實參擁有分別的存儲空間,即便是指針傳遞,改變的也只可能是這個指針變數所指向的內容,而不是指針變數本身的值,也即,如有指針變數p,那對實參的變化,有可能改變的也只是*p的值,而不是p本身的值。