C 函式引數
引數和實參
資訊可以作為引數傳遞給函式。引數在函式內部充當變數。
引數在函式名之後、括號內部指定。您可以新增任意數量的引數,只需用逗號分隔即可。
語法
returnType functionName(parameter1, parameter2, parameter3) {
// 要執行的程式碼
}
在下面的示例中,函式以 name 作為引數,接收一個字元串。呼叫函式時,我們傳遞一個名字,該名字在函式內部用於列印“Hello”和每個人的名字。
示例
void myFunction(char name[]) {
printf("Hello %s\n", name);
}
int main() {
myFunction("Liam");
myFunction("Jenny");
myFunction("Anja");
return 0;
}
// Hello Liam
// Hello Jenny
// Hello Anja
自己動手試一試 »
當一個引數傳遞給函式時,它被稱為實參。因此,從上面的示例中:name
是一個引數,而 Liam
、Jenny
和 Anja
是實參。
多個引數
在函式內部,您可以新增任意數量的引數。
示例
void myFunction(char name[], int age) {
printf("Hello %s. You are %d years old.\n", name, age);
}
int main() {
myFunction("Liam", 3);
myFunction("Jenny", 14);
myFunction("Anja", 30);
return 0;
}
// Hello Liam. You are 3 years old.
// Hello Jenny. You are 14 years old.
// Hello Anja. You are 30 years old.
自己動手試一試 »
如果我們考慮前一頁的“計算數字之和”示例,我們可以透過使用函式引數來建立一個更可持續的程式。
示例
void calculateSum(int x, int y) {
int sum = x + y;
printf("The sum of %d + %d is: %d\n", x, y, sum);
}
int main() {
calculateSum(5, 3);
calculateSum(8, 2);
calculateSum(15, 15);
return 0;
}
自己動手試一試 »
關於引數的注意事項
請注意,在使用多個引數時,函式呼叫必須具有與引數相同數量的實參,並且實參必須按相同順序傳遞。
將陣列作為函式引數傳遞
您也可以將陣列傳遞給函式。
示例
void myFunction(int myNumbers[5]) {
for (int i = 0; i < 5; i++) {
printf("%d\n", myNumbers[i]);
}
}
int main() {
int myNumbers[5] = {10, 20, 30, 40, 50};
myFunction(myNumbers);
return 0;
}
自己動手試一試 »
示例解釋
該函式(myFunction
)將其引數(int myNumbers[5]
)作為一個數組,並使用 for
迴圈遍歷陣列元素。
當函式在 main()
中呼叫時,我們傳遞 myNumbers
陣列,它會輸出陣列元素。
請注意,當您呼叫函式時,只需使用陣列名稱即可將其作為實參傳遞 myFunction(myNumbers)
。但是,在函式引數中需要完整的陣列宣告(int myNumbers[5]
)。
返回值
前面示例中使用的 void
關鍵字表示函式不應返回值。如果您希望函式返回值,可以使用資料型別(如 int
或 float
等)代替 void
,並在函式內部使用 return
關鍵字。
示例
int myFunction(int x) {
return 5 + x;
}
int main() {
printf("Result is: %d", myFunction(3));
return 0;
}
// Outputs 8 (5 + 3)
自己動手試一試 »
此示例返回具有兩個引數的函式的總和。
示例
int myFunction(int x, int y) {
return x + y;
}
int main() {
printf("Result is: %d", myFunction(5, 3));
return 0;
}
// Outputs 8 (5 + 3)
自己動手試一試 »
您也可以將結果儲存在變數中。
示例
int myFunction(int x, int y) {
return x + y;
}
int main() {
int result = myFunction(5, 3);
printf("Result is = %d", result);
return 0;
}
// Outputs 8 (5 + 3)
自己動手試一試 »
如果我們再次考慮“計算數字之和”的示例,我們可以使用 return
代替,並將結果儲存在不同的變數中。這將使程式更加靈活且易於控制。
示例
int calculateSum(int x, int y) {
return x + y;
}
int main() {
int result1 = calculateSum(5, 3);
int result2 = calculateSum(8, 2);
int result3 = calculateSum(15, 15);
printf("Result1 is: %d\n", result1);
printf("Result2 is: %d\n", result2);
printf("Result3 is: %d\n", result3);
return 0;
}
自己動手試一試 »
提示:如果您有許多“結果變數”,最好將結果儲存在陣列中。
示例
int calculateSum(int x, int y) {
return x + y;
}
int main() {
// Create an array
int resultArr[6];
// Call the function with different arguments and store the results in the array
resultArr[0] = calculateSum(5, 3);
resultArr[1] = calculateSum(8, 2);
resultArr[2] = calculateSum(15, 15);
resultArr[3] = calculateSum(9, 1);
resultArr[4] = calculateSum(7, 7);
resultArr[5] = calculateSum(1, 1);
for (int i = 0; i < 6; i++) {
printf("Result%d is = %d\n", i + 1, resultArr[i]);
}
return 0;
}
自己動手試一試 »
現實生活中的例子
為了演示使用函式的實際示例,讓我們建立一個將華氏度轉換為攝氏度的程式。
示例
// 將華氏度轉換為攝氏度的函式
float toCelsius(float fahrenheit) {
return (5.0 / 9.0) * (fahrenheit - 32.0);
}
int main() {
// 設定一個華氏度值
float f_value = 98.8;
// 使用華氏度值呼叫函式
float result = toCelsius(f_value);
// 列印華氏度值
printf("Fahrenheit: %.2f\n", f_value);
// 列印結果
printf("Convert Fahrenheit to Celsius: %.2f\n", result);
return 0;
}
自己動手試一試 »