引數和變數
函式分有引數函式和無引數函式,函式引數當然只有引數的函式。函式引數就是我們寫函式名稱後圓括號內的常量值、變數、表示式或函式。當我們定義函式時,這是的引數有稱為形式引數,形式引數不能是常量值。當我們引用或呼叫該函式時,這時的引數有稱為實際引數(實參)。形式引數的型別說明可在函式體{}與緊跟在函式名之後的()之間,也可在()之內,目前流行的風格應是在括號內。這是一種風格問題,可以依照個人習慣。
在函式呼叫時,大多數的情況下,主函式和被呼叫的函式之間有資料傳遞關係,在傳遞資料時情況較複雜,但記住一點就是引數型別必須匹配,數量一般也相等(除在某些庫函式用省時後續引數),集中較複雜的情況說明如下:
1,強制型別轉換。這些型別轉換必須是c語言中可進行的。如形參說明為int,而實參為float型,那麼在實際處理時按float型處理。
2,資料型別轉換。包括字串,在呼叫函式時傳遞實參變數陣列的目前地址,或字串的首指標。
3,在以函式或表示式做引數時,實參形式的表示式或函式必須有確定的與形參型別匹配的值,
另外還應注意,c中規定,實參變數對形參變數的資料傳遞都是在區域性的情況下單向傳遞的,只能是實參傳遞給形參,而不能把形參傳遞給實參,但是如果實參變數和形參變數都是全域性變數時就不同了,這時形參的改變會影響實參的改變,這在某些場合中是一種非常有用的方法。比如我們編寫兩個矩陣相乘的函式,兩個實參形式的矩陣相乘函式呼叫一個函式時,相乘的結果(兩矩陣相乘)要返回到呼叫函式,這是用全域性變數就是一種折中的方法,但最好的方法還是採用函式引數直接返回的方法,下面是用全域性變數的方法實現的陣列之間的乘法,用來說明引數的傳遞。
package com.wepull.lesson1;
import java.util.Scanner;
public class TestJieCheng {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個數");
int a = sc.nextInt();
int c = f(a);
System.out.println(a + "的階乘為" + c);
}
public static int f(int n) {
if (n == 0 | n == 1) {
int m = 1;
return m;
} else {
int p = n * f(n - 1);
return p;
}
}
}
函式引數像數學中的函式一樣,在數學中,y=f(x)是基本的函式表達形式,x可看作是引數,y可看作是返回值;z=f(x,y)事二元函式,有兩個引數,在C語言中對應於兩個引數的函式。這樣大家或許明白了什麼時函式及函式引數了吧。
相關文章
- kettle 引數——變數引數和常量引數變數
- Bash變數和引數變數
- python變數和引數Python變數
- Swift學習筆記(三十三)——常量引數,變數引數和inout引數Swift筆記變數
- Swift語言中為外部引數設定預設值可變引數常量引數變數引數輸入輸出引數Swift變數
- iOS可變引數(不定引數)的用法iOS
- c#基礎-5.變長引數和引數預設值C#
- Python可變引數*args和**kwargsPython
- 查詢hadoop引數變數Hadoop變數
- 【勝通 】mysql的引數變數MySql變數
- 【Java】可變引數Java
- Swift: 可變引數Swift
- Java可變引數Java
- Java 可變引數Java
- python---函式引數、變數Python函式變數
- JavaScript形式引數和實際引數JavaScript
- 關鍵字引數與非關鍵字引數(可變引數)詳解
- go-可變引數Go
- 集合框架-可變引數框架
- Python可變引數Python
- 可變引數例項
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- Java方法04:命令列傳遞引數、可變引數Java命令列
- OB有問必答 | 引數和變數的區別是什麼?變數
- javascript函式引數和函式內同名變數的關係JavaScript函式變數
- Java對比有引數和無引數Java
- nodejs接收get引數和post引數NodeJS
- 不重啟mysql情況修改引數變數MySql變數
- 變數的分類(臨時(本地)變數、環境變數、全域性變數和系統變數)變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- php函式之如何用預設引數和可變長度引數方式傳遞?PHP函式
- 關於靜態引數和動態引數
- C#中命名引數和可選引數C#
- linux基礎——shell變數(本地變數和環境變數)Linux變數
- 【重學Java】可變引數Java
- Java - 可變引數的使用Java
- c++可變模板引數C++
- Java方法05:可變引數Java