選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP How to W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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 是一個引數,而 LiamJennyAnja實參


多個引數

在函式內部,您可以新增任意數量的引數。

示例

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 關鍵字表示函式不應返回值。如果您希望函式返回值,可以使用資料型別(如 intfloat 等)代替 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;
}
自己動手試一試 »


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援