ฟังก์ชัน C ++
ฟังก์ชันคือกลุ่มของคำสั่งที่ทำงานร่วมกัน ทุกโปรแกรม C ++ มีอย่างน้อยหนึ่งฟังก์ชันซึ่งก็คือmain()และโปรแกรมที่ไม่สำคัญทั้งหมดสามารถกำหนดฟังก์ชันเพิ่มเติมได้
คุณสามารถแบ่งรหัสของคุณออกเป็นฟังก์ชันแยกกันได้ การแบ่งรหัสของคุณระหว่างฟังก์ชันต่างๆนั้นขึ้นอยู่กับคุณ แต่ในทางตรรกะแล้วการหารมักจะเป็นเช่นนั้นแต่ละฟังก์ชันจะทำงานเฉพาะ
ฟังก์ชั่น declarationบอกคอมไพเลอร์เกี่ยวกับชื่อของฟังก์ชันชนิดการส่งคืนและพารามิเตอร์ ฟังก์ชั่นdefinition ให้ตัวจริงของฟังก์ชั่น
ไลบรารีมาตรฐาน C ++ มีฟังก์ชันในตัวมากมายที่โปรแกรมของคุณสามารถเรียกใช้ได้ ตัวอย่างเช่นฟังก์ชันstrcat() เพื่อเชื่อมสองสตริงฟังก์ชัน memcpy() เพื่อคัดลอกตำแหน่งหน่วยความจำหนึ่งไปยังตำแหน่งอื่นและฟังก์ชันอื่น ๆ อีกมากมาย
ฟังก์ชั่นเป็นที่รู้จักด้วยชื่อต่างๆเช่นวิธีการหรือรูทีนย่อยหรือโพรซีเดอร์เป็นต้น
การกำหนดฟังก์ชัน
รูปแบบทั่วไปของนิยามฟังก์ชัน C ++ มีดังนี้ -
return_type function_name( parameter list ) {
body of the function
}
นิยามฟังก์ชัน C ++ ประกอบด้วยส่วนหัวของฟังก์ชันและเนื้อหาของฟังก์ชัน นี่คือส่วนทั้งหมดของฟังก์ชัน -
Return Type- ฟังก์ชันอาจส่งคืนค่า return_typeคือชนิดข้อมูลของค่าที่ฟังก์ชันส่งกลับ บางฟังก์ชันดำเนินการตามที่ต้องการโดยไม่ส่งคืนค่า ในกรณีนี้ return_type คือคีย์เวิร์ดvoid.
Function Name- นี่คือชื่อจริงของฟังก์ชัน ชื่อฟังก์ชันและรายการพารามิเตอร์ประกอบกันเป็นลายเซ็นฟังก์ชัน
Parameters- พารามิเตอร์เปรียบเสมือนตัวยึด เมื่อเรียกใช้ฟังก์ชันคุณจะส่งค่าไปยังพารามิเตอร์ ค่านี้เรียกว่าพารามิเตอร์หรืออาร์กิวเมนต์จริง รายการพารามิเตอร์หมายถึงประเภทลำดับและจำนวนพารามิเตอร์ของฟังก์ชัน พารามิเตอร์เป็นทางเลือก นั่นคือฟังก์ชันอาจไม่มีพารามิเตอร์
Function Body - เนื้อความของฟังก์ชันประกอบด้วยชุดของคำสั่งที่กำหนดสิ่งที่ฟังก์ชันทำ
ตัวอย่าง
ต่อไปนี้เป็นซอร์สโค้ดสำหรับฟังก์ชันที่เรียกว่า max(). ฟังก์ชันนี้รับสองพารามิเตอร์ num1 และ num2 และส่งกลับค่าที่ใหญ่ที่สุดของทั้งสอง -
// function returning the max between two numbers
int max(int num1, int num2) {
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
การประกาศฟังก์ชัน
ฟังก์ชั่น declarationบอกคอมไพเลอร์เกี่ยวกับชื่อฟังก์ชันและวิธีเรียกใช้ฟังก์ชัน สามารถกำหนดเนื้อความจริงของฟังก์ชันแยกกันได้
การประกาศฟังก์ชันมีส่วนต่างๆดังนี้ -
return_type function_name( parameter list );
สำหรับฟังก์ชันที่กำหนดไว้ข้างต้น max () ต่อไปนี้คือการประกาศฟังก์ชัน -
int max(int num1, int num2);
ชื่อพารามิเตอร์ไม่สำคัญในการประกาศฟังก์ชันจำเป็นต้องระบุประเภทเท่านั้นดังนั้นต่อไปนี้เป็นการประกาศที่ถูกต้อง -
int max(int, int);
จำเป็นต้องมีการประกาศฟังก์ชันเมื่อคุณกำหนดฟังก์ชันในซอร์สไฟล์หนึ่งและคุณเรียกใช้ฟังก์ชันนั้นในไฟล์อื่น ในกรณีนี้คุณควรประกาศฟังก์ชันที่ด้านบนของไฟล์ที่เรียกใช้ฟังก์ชัน
เรียกใช้ฟังก์ชัน
ในขณะที่สร้างฟังก์ชัน C ++ คุณต้องให้คำจำกัดความว่าฟังก์ชันนี้มีไว้ทำอะไร ในการใช้ฟังก์ชันคุณจะต้องเรียกใช้หรือเรียกใช้ฟังก์ชันนั้น
เมื่อโปรแกรมเรียกใช้ฟังก์ชันการควบคุมโปรแกรมจะถูกโอนไปยังฟังก์ชันที่เรียก ฟังก์ชันที่เรียกว่าจะทำงานที่กำหนดไว้และเมื่อมีการเรียกใช้คำสั่ง return หรือเมื่อถึงวงเล็บปีกกาปิดฟังก์ชันสิ้นสุดฟังก์ชันจะส่งคืนการควบคุมโปรแกรมกลับไปยังโปรแกรมหลัก
ในการเรียกใช้ฟังก์ชันคุณเพียงแค่ส่งพารามิเตอร์ที่ต้องการพร้อมกับชื่อฟังก์ชันและหากฟังก์ชันส่งคืนค่าคุณก็สามารถจัดเก็บค่าที่ส่งคืนได้ ตัวอย่างเช่น -
#include <iostream>
using namespace std;
// function declaration
int max(int num1, int num2);
int main () {
// local variable declaration:
int a = 100;
int b = 200;
int ret;
// calling a function to get max value.
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
// function returning the max between two numbers
int max(int num1, int num2) {
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
ฉันเก็บฟังก์ชัน max () ไว้พร้อมกับฟังก์ชัน main () และรวบรวมซอร์สโค้ด ในขณะที่เรียกใช้ไฟล์ปฏิบัติการขั้นสุดท้ายจะให้ผลลัพธ์ดังต่อไปนี้ -
Max value is : 200
อาร์กิวเมนต์ของฟังก์ชัน
ถ้าฟังก์ชันจะใช้อาร์กิวเมนต์ฟังก์ชันจะต้องประกาศตัวแปรที่ยอมรับค่าของอาร์กิวเมนต์ ตัวแปรเหล่านี้เรียกว่าformal parameters ของฟังก์ชัน
พารามิเตอร์ที่เป็นทางการจะทำงานเหมือนกับตัวแปรท้องถิ่นอื่น ๆ ภายในฟังก์ชันและถูกสร้างขึ้นเมื่อเข้าสู่ฟังก์ชันและถูกทำลายเมื่อออก
ในขณะที่เรียกใช้ฟังก์ชันมีสองวิธีที่สามารถส่งผ่านอาร์กิวเมนต์ไปยังฟังก์ชัน -
ซีเนียร์ No | ประเภทการโทรและคำอธิบาย |
---|---|
1 | โทรตามค่า
วิธีนี้คัดลอกค่าที่แท้จริงของอาร์กิวเมนต์ลงในพารามิเตอร์ที่เป็นทางการของฟังก์ชัน ในกรณีนี้การเปลี่ยนแปลงที่เกิดขึ้นกับพารามิเตอร์ภายในฟังก์ชันจะไม่มีผลกับอาร์กิวเมนต์ |
2 | โทรตามตัวชี้
วิธีนี้คัดลอกที่อยู่ของอาร์กิวเมนต์ลงในพารามิเตอร์ที่เป็นทางการ ภายในฟังก์ชันจะใช้แอดเดรสเพื่อเข้าถึงอาร์กิวเมนต์จริงที่ใช้ในการโทร ซึ่งหมายความว่าการเปลี่ยนแปลงที่เกิดขึ้นกับพารามิเตอร์มีผลต่ออาร์กิวเมนต์ |
3 | โทรตามข้อมูลอ้างอิง
วิธีนี้คัดลอกการอ้างอิงของอาร์กิวเมนต์ลงในพารามิเตอร์ที่เป็นทางการ ภายในฟังก์ชันการอ้างอิงจะใช้เพื่อเข้าถึงอาร์กิวเมนต์จริงที่ใช้ในการโทร ซึ่งหมายความว่าการเปลี่ยนแปลงที่เกิดขึ้นกับพารามิเตอร์มีผลต่ออาร์กิวเมนต์ |
โดยค่าเริ่มต้น C ++ จะใช้ call by valueเพื่อส่งผ่านข้อโต้แย้ง โดยทั่วไปหมายความว่าโค้ดภายในฟังก์ชันไม่สามารถเปลี่ยนแปลงอาร์กิวเมนต์ที่ใช้เรียกฟังก์ชันและตัวอย่างที่กล่าวถึงข้างต้นในขณะที่เรียกฟังก์ชัน max () ก็ใช้วิธีการเดียวกัน
ค่าเริ่มต้นสำหรับพารามิเตอร์
เมื่อคุณกำหนดฟังก์ชันคุณสามารถระบุค่าเริ่มต้นสำหรับพารามิเตอร์สุดท้ายแต่ละตัวได้ ค่านี้จะถูกใช้หากอาร์กิวเมนต์ที่เกี่ยวข้องเว้นว่างไว้เมื่อเรียกใช้ฟังก์ชัน
ทำได้โดยใช้ตัวดำเนินการกำหนดและกำหนดค่าสำหรับอาร์กิวเมนต์ในนิยามฟังก์ชัน หากไม่ส่งค่าสำหรับพารามิเตอร์นั้นเมื่อฟังก์ชันถูกเรียกใช้ค่าที่กำหนดดีฟอลต์จะถูกใช้ แต่หากระบุค่าไว้ค่าดีฟอลต์นี้จะถูกละเว้นและใช้ค่าที่ผ่านแทน ลองพิจารณาตัวอย่างต่อไปนี้ -
#include <iostream>
using namespace std;
int sum(int a, int b = 20) {
int result;
result = a + b;
return (result);
}
int main () {
// local variable declaration:
int a = 100;
int b = 200;
int result;
// calling a function to add the values.
result = sum(a, b);
cout << "Total value is :" << result << endl;
// calling a function again as follows.
result = sum(a);
cout << "Total value is :" << result << endl;
return 0;
}
เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -
Total value is :300
Total value is :120