什麼是函數參數,如何傳遞函數參數

來源:互聯網
上載者:User
函數分有參數函數和無參數函數,函數參數當然只有參數的函數。函數參數就是我們寫函數名稱後圓括弧內的常量值、變數、運算式或函數。當我們定義函數時,這 是的參數有稱為形式參數,形式參數不能是常量值。當我們引用或調用該函數時,這是的參數有稱為實際參數(實參)。形式參數的類型說明可在函數體{}與緊跟 在函數名之後的()之間,也可在()之內,目前流行的風格應是在括弧內。這是一種風格問題,可以依照個人習慣。

在函數調用時,大多數的情況下,主函數和被調用的函數之間有資料傳遞關係,在傳遞資料時情況較複雜,但記住一點就是參數類型必須匹配,數量一般也相等(除在某些庫函數用省時後續參數),集中較複雜的情況說明如下:

1,強制類型轉換。這些類型轉換必須是c語言中可進行的。如形參說明為int,而實參為float型,那麼在實際處理時按float型處理。
2,資料類型轉換。包括字串,在調用函數時傳遞實參變數數組的目前地址,或字串的首指標。
3,在以函數或運算式做參數時,實參形式的運算式或函數必須有確定的與形參類型匹配的值,
另外還應注意,c中規定,時參變數對形參變數的資料傳遞都是在局部的情況下單向傳遞的,只能是參傳遞給形參,而不能把形參傳遞給實參,但是如果實參變數和 形參變數都是全域變數時就不同了,這時形參的改變會影響實參的改變,這在某些場合中是一種非常有用的方法。比如我們編寫兩個矩陣相乘的函數,兩個實參形式 的矩陣相乘函數調用一個函數時,相乘的結果(兩矩陣相乘)要返回到調用函數,這是用全域變數就是一種折中的方法,但最好的方法還是採用函數參數直接返回的 方法,下面是用全域變數的方法實現的數組之間的乘法,用來說明參數的傳遞。

/*****************A=B*C******************/ #include<stdio.h>
#include<conio.h>
#define X 3
#define Y 3

int a[X][Y];
int b[X][Y];
int c[X][Y];

void matrix(int b[][X],int c[][Y]);
main()
{
int i,j,temp;
clrscr();
printf("lease input int matrix b[%d][%d]"n",X,Y);
for(i=0;i<Y;i++) /*輸入要進行運算的數組*/ for(j=0;j<Y;j++){
scanf("%d",&temp);
b[j]=temp;
}
printf("lease input int matrix c[%d][%d]"n",X,Y);
for(i=0;i<X;i++) /*輸入要進行運算的數組*/ for(j=0;j<Y;j++){
scanf("%d",&temp);
c[j]=temp;
}
matrix(b,c);
printf("Now print resource matrix b[%d][%d]=",X,Y);
for(i=0;i<X;i++){
printf(""n" ;
for(j=0;j<Y;j++)
printf("%d ",b[j]);
}
printf(""n" ;
printf("Now print resource matrix c[%d][%d]=",X,Y);
for(i=0;i<X;i++){
printf(""n" ;
for(j=0;j<Y;j++)
printf("%d ",c[j]);
} /*完成對輸入的相應,即把輸入的數組打出來*/ printf(""n":lol ;
printf("Now printm multiply results matrix a[%d][%d]=B*C:",X,Y);
for(i=0;i<X;i++){
printf(""n":lol ;
for(j=0;j<Y;j++)
printf("%d ",a[j]);
}/*打出結果*/ getch();
return 0;
}
/**********************計算數組乘法的子函數************************/ void matrix(int b[][X],int c[][Y])
{
int i,j,k,temp;
for(i=0;i<X;i++)
for(j=0;j<Y;j++){
for(k=0;k<Y;k++)
a[j]+=b[k]*c[k][j];
}
}

大家可看出,函數參數像數學中的函數一樣,在數學中,y=f(x)是基本的函數表達形式,x可看作是參數,y可看作是傳回值;z=f(x,y)事二元函數,有兩個參數,在C語言中對應於兩個參數的函數。這樣大家或許明白了什麼時函數及函數參數了吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.