C++ ฟังก์ชั่นพร้อมตัวอย่างโปรแกรม

⚡ สรุปอย่างชาญฉลาด

ฟังก์ชั่นใน C++ จัดกลุ่มคำสั่งที่เกี่ยวข้องเข้าด้วยกันเป็นบล็อกที่มีชื่อซึ่งสามารถนำกลับมาใช้ใหม่ได้ โดยบล็อกเหล่านี้จะรับข้อมูลเข้า ประมวลผล และส่งคืนข้อมูลออก โปรแกรมจะผสมผสานฟังก์ชันจากไลบรารีในตัวและฟังก์ชันที่ผู้ใช้กำหนดเอง โดยแต่ละฟังก์ชันจะถูกประกาศ กำหนด และเรียกใช้เพื่อหลีกเลี่ยงการเขียนโค้ดซ้ำซ้อน

  • 🧩 มันคืออะไร: ฟังก์ชันคือกลุ่มของคำสั่งที่รับพารามิเตอร์ ประมวลผล และส่งคืนค่า โดยเรียกใช้งานงานทั่วไปจากบล็อกเดียว
  • 📚 ฟังก์ชั่นในตัว: การขอ C++ ไลบรารีมาตรฐานมีฟังก์ชันสำเร็จรูป เช่น sqrt() ที่คุณสามารถเรียกใช้ได้โดยตรงโดยไม่ต้องเขียนโค้ดเอง
  • 🛠️ ฟังก์ชันที่ผู้ใช้กำหนดเอง: โปรแกรมเมอร์สร้างฟังก์ชันของตนเอง ตั้งชื่อฟังก์ชันเหล่านั้นให้ไม่ซ้ำกัน และเรียกใช้โค้ดเหล่านั้นจากที่ใดก็ได้ในโปรแกรม
  • 📝 คำประกาศและคำจำกัดความ: ต้นแบบฟังก์ชันจะประกาศชนิดของค่าส่งคืน ชื่อฟังก์ชัน และชนิดของอาร์กิวเมนต์ ส่วนนิยามฟังก์ชันจะให้รายละเอียดของฟังก์ชัน
  • 📞 การเรียกและอาร์กิวเมนต์: การเรียกฟังก์ชันจะเรียกใช้เนื้อหาของฟังก์ชันนั้น โดยอาร์กิวเมนต์ต้องตรงกับพารามิเตอร์ทั้งจำนวนและชนิด และอนุญาตให้ใช้ค่าเริ่มต้นได้
  • 🤖 ความช่วยเหลือจากเอไอ: GitHub Copilot และเครื่องมือช่วยสร้างโครงสร้างพื้นฐานที่คล้ายกัน C++ รูปแบบการเรียกใช้ฟังก์ชัน เนื้อหา และการเรียกใช้ฟังก์ชันจากข้อความอธิบายสั้นๆ

C++ ฟังก์ชั่น

ฟังก์ชั่นในคืออะไร C++?

ฟังก์ชั่นใน C++ หมายถึงกลุ่มคำสั่งที่รับอินพุต ประมวลผล และส่งคืนเอาต์พุต แนวคิดเบื้องหลังฟังก์ชันคือการรวมงานทั่วไปที่ทำซ้ำๆ เข้าด้วยกัน หากคุณมีอินพุตที่แตกต่างกัน คุณจะไม่เขียนโค้ดเดิมอีก คุณเพียงแค่เรียกใช้ฟังก์ชันด้วยชุดข้อมูลอื่นที่เรียกว่าพารามิเตอร์

แต่ละ C++ โปรแกรมมีอย่างน้อยหนึ่งฟังก์ชัน นั่นคือฟังก์ชัน main() คุณสามารถแบ่งโค้ดของคุณออกเป็นฟังก์ชันต่างๆ ได้ แผนกนี้ควรเป็นแบบที่ทุกฟังก์ชันทำงานเฉพาะเจาะจง

มีฟังก์ชั่นในตัวมากมายใน C++ ห้องสมุดมาตรฐาน คุณสามารถเรียกใช้ฟังก์ชันเหล่านี้ภายในโปรแกรมของคุณได้

ทำไมต้องใช้ฟังก์ชั่น?

มีประโยชน์มากมายที่เกี่ยวข้องกับการใช้ฟังก์ชัน ซึ่งรวมถึง:

  • แต่ละฟังก์ชันจะรวมโค้ดที่เกี่ยวข้องเข้าด้วยกัน ทำให้โปรแกรมเมอร์เข้าใจโค้ดได้ง่ายขึ้น
  • ฟังก์ชันทำให้การเขียนโปรแกรมง่ายขึ้นโดยกำจัดการซ้ำซ้อนของโค้ด
  • ฟังก์ชันอำนวยความสะดวกในการใช้โค้ดซ้ำ คุณสามารถเรียกใช้ฟังก์ชันเดียวกันเพื่อทำงานในส่วนต่างๆ ของโปรแกรม หรือแม้แต่ภายนอกโปรแกรมก็ได้

ฟังก์ชั่นในตัว

In C++ฟังก์ชันไลบรารีนั้นมีอยู่แล้วในตัว C++ ฟังก์ชั่น หากต้องการใช้ฟังก์ชันเหล่านี้ คุณเพียงแค่เรียกใช้/โทรหาฟังก์ชันเหล่านั้นโดยตรง คุณไม่จำเป็นต้องเขียนฟังก์ชันด้วยตัวเอง

1 ตัวอย่าง:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
	double num, squareRoot;
	cout << "Enter number: ";
	cin >> num;
	squareRoot = sqrt(num);
	cout << "The square root of " << num << " is: " << squareRoot;
	return 0;
}

Output:

ผลลัพธ์ของ C++ ตัวอย่างฟังก์ชัน sqrt() ในตัว

นี่คือภาพหน้าจอของรหัส:

C++ โค้ดที่เรียกใช้ฟังก์ชัน sqrt() ในตัวจาก cmath

Code คำอธิบาย:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมของเราเพื่อใช้ฟังก์ชันต่างๆ
  2. รวมไลบรารี cmath เพื่อใช้ฟังก์ชันต่างๆ เราต้องการใช้ฟังก์ชัน sqrt() ที่กำหนดไว้
  3. รวมเนมสเปซมาตรฐานไว้ในโค้ดของเราเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
  4. เรียกใช้ฟังก์ชัน main() ควรเพิ่มตรรกะของโปรแกรมภายในเนื้อหาของฟังก์ชันนี้
  5. ประกาศตัวแปร double สองตัวคือ num และ squareRoot
  6. พิมพ์ข้อความบนคอนโซล ข้อความขอให้ผู้ใช้ป้อนตัวเลข
  7. อ่านอินพุตของผู้ใช้จากแป้นพิมพ์ อินพุตจะกลายเป็นค่าของตัวแปร num
  8. เรียกใช้ฟังก์ชันไลบรารี sqrt() ซึ่งคำนวณรากที่สองของตัวเลข เราส่งพารามิเตอร์ num ไปยังฟังก์ชัน ซึ่งหมายความว่าฟังก์ชันจะคำนวณรากที่สองของ num ฟังก์ชันนี้ถูกกำหนดไว้ในไลบรารี cmath
  9. พิมพ์ตัวเลขที่ผู้ใช้ป้อน รากที่สอง และข้อความอื่นๆ บนคอนโซล
  10. โปรแกรมจะต้องคืนค่าเมื่อเสร็จสิ้นสำเร็จ
  11. ส่วนท้ายของฟังก์ชัน main()

ฟังก์ชันที่ผู้ใช้กำหนด

C++ อนุญาตให้โปรแกรมเมอร์กำหนดฟังก์ชันของตนเอง วัตถุประสงค์ของฟังก์ชันคือเพื่อจัดกลุ่มโค้ดที่เกี่ยวข้อง จากนั้นโค้ดจะได้รับตัวระบุเฉพาะ ชื่อฟังก์ชัน

สามารถเรียกใช้/เรียกใช้ฟังก์ชันจากส่วนอื่นๆ ของโปรแกรมได้ จากนั้นจะรันโค้ดที่กำหนดไว้ภายในเนื้อความ

2 ตัวอย่าง:

#include <iostream>
using namespace std;

void sayHello() {
	cout << "Hello!";
}

int main() {

	sayHello();

	return 0;
}

Output:

ผลลัพธ์ของ C++ ฟังก์ชัน sayHello() ที่ผู้ใช้กำหนดเอง

นี่คือภาพหน้าจอของรหัส:

C++ โค้ดที่กำหนดและเรียกใช้ฟังก์ชันที่ผู้ใช้กำหนดเอง

Code คำอธิบาย:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมของเราเพื่อใช้ฟังก์ชันต่างๆ
  2. รวมเนมสเปซมาตรฐานไว้ในโค้ดของเราเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
  3. สร้างฟังก์ชันที่ผู้ใช้กำหนดชื่อ sayHello()
  4. พิมพ์ข้อความบนคอนโซลเมื่อมีการเรียกใช้ฟังก์ชัน sayHello()
  5. ส่วนท้ายของฟังก์ชัน sayHello()
  6. เรียกใช้ฟังก์ชัน main() ควรเพิ่มตรรกะของโปรแกรมภายในเนื้อหาของฟังก์ชันนี้
  7. โทร/เรียกใช้ฟังก์ชันชื่อ sayHello()
  8. โปรแกรมจะต้องคืนค่าเมื่อเสร็จสิ้นสำเร็จ
  9. ส่วนท้ายของฟังก์ชัน main()

คอมไพเลอร์ต้องรู้จักฟังก์ชันนั้นก่อนที่จะนำไปใช้งาน

ประกาศฟังก์ชัน/ต้นแบบ

หากคุณกำหนดฟังก์ชันที่ผู้ใช้กำหนดไว้หลังฟังก์ชัน main() ฟังก์ชัน C++ ผู้รวบรวม จะส่งกลับข้อผิดพลาด สาเหตุคือคอมไพเลอร์ไม่ทราบรายละเอียดของฟังก์ชันที่ผู้ใช้กำหนด รายละเอียดได้แก่ ชื่อของฟังก์ชัน ประเภทของอาร์กิวเมนต์ และประเภทการส่งคืนของฟังก์ชันเหล่านั้น

In C++การประกาศฟังก์ชัน/ต้นแบบจะประกาศฟังก์ชันโดยไม่มีเนื้อหา ซึ่งจะให้รายละเอียดแก่คอมไพเลอร์เกี่ยวกับฟังก์ชันที่ผู้ใช้กำหนด

ในการประกาศ/ต้นแบบ เราจะรวมประเภทการส่งคืน ชื่อฟังก์ชัน และประเภทอาร์กิวเมนต์ ไม่มีการเพิ่มชื่อของข้อโต้แย้ง อย่างไรก็ตาม การเพิ่มชื่ออาร์กิวเมนต์จะไม่ทำให้เกิดข้อผิดพลาด

C++ แผนภาพไวยากรณ์การประกาศฟังก์ชัน/ต้นแบบ

นิยามฟังก์ชัน

วัตถุประสงค์ของการประกาศฟังก์ชั่นคือการบอก C++ คอมไพเลอร์เกี่ยวกับชื่อฟังก์ชัน ประเภทการส่งคืน และพารามิเตอร์ คำจำกัดความของฟังก์ชันจะบอก C++ คอมไพเลอร์เกี่ยวกับเนื้อหาของฟังก์ชัน

C++ แผนภาพโครงสร้างนิยามฟังก์ชัน

วากยสัมพันธ์

return_datatype function_name( parameters) {
   function body 
}

จากที่กล่าวมาข้างต้น นิยามฟังก์ชันจะมีส่วนหัวและเนื้อหาของฟังก์ชัน นี่คือคำอธิบายของพารามิเตอร์:

  • return_datatype - ฟังก์ชันบางฟังก์ชันส่งค่ากลับ พารามิเตอร์นี้ระบุชนิดข้อมูลของค่าที่ส่งกลับ ฟังก์ชันบางฟังก์ชันไม่ส่งค่ากลับ ในกรณีนั้น ค่าของพารามิเตอร์นี้จะเป็น void
  • function_name- นี่คือชื่อของฟังก์ชัน ชื่อฟังก์ชันและพารามิเตอร์จะสร้างลายเซ็นของฟังก์ชัน
  • พารามิเตอร์ - นี่คือประเภท ลำดับ และจำนวนของพารามิเตอร์ของฟังก์ชัน บางฟังก์ชันไม่มีพารามิเตอร์
  • function body- คือคำสั่งที่กำหนดว่าฟังก์ชันจะทำอะไร

เรียกฟังก์ชัน

เพื่อให้ฟังก์ชันดำเนินงานที่ระบุและส่งคืนเอาต์พุต จะต้องเรียกฟังก์ชันนั้น เมื่อคุณเรียกใช้ฟังก์ชัน ฟังก์ชันจะประมวลผลคำสั่งที่เพิ่มภายในเนื้อความ

ฟังก์ชันจะถูกเรียกใช้โดยใช้ชื่อของมัน หากฟังก์ชันรับพารามิเตอร์ จะต้องส่งค่าของพารามิเตอร์เหล่านั้นไปในระหว่างการเรียกใช้ หากฟังก์ชันไม่รับพารามิเตอร์ ก็ไม่ต้องส่งค่าใดๆ ไปในระหว่างการเรียกใช้

C++ แผนภาพไวยากรณ์การเรียกใช้ฟังก์ชัน

ผ่านข้อโต้แย้ง

In C++อาร์กิวเมนต์/พารามิเตอร์คือข้อมูลที่ส่งผ่านไปยังฟังก์ชันระหว่างการโทร ค่าจะต้องเริ่มต้นให้กับตัวแปรที่เกี่ยวข้อง

เมื่อเรียกใช้ฟังก์ชัน จำนวนอาร์กิวเมนต์ต้องตรงกัน นั่นหมายความว่าค่าที่คุณส่งผ่านต้องเท่ากับจำนวนพารามิเตอร์ และชนิดของค่าต้องตรงกับพารามิเตอร์ด้วย หากพารามิเตอร์ตัวแรกเป็นจำนวนเต็ม ค่าที่ส่งผ่านก็ต้องเป็นจำนวนเต็มเช่นกัน

เราสามารถกำหนดค่าเริ่มต้นให้กับพารามิเตอร์ของฟังก์ชันได้ หากเราไม่ได้ระบุค่าสำหรับพารามิเตอร์ในระหว่างการเรียกใช้ฟังก์ชัน ระบบจะใช้ค่าเริ่มต้น

ตัวอย่างที่ 3: วิธีการเขียนและการเรียกใช้ฟังก์ชัน

#include <iostream>
using namespace std;
int addFunc(int, int);
int main() {
	int x, y, sum;
	cout << "Enter two numbers: ";
	cin >> x >> y;
	sum = addFunc(x, y);
	cout <<"The sum of "<<x<< " and " <<y<<" is: "<<sum;
	return 0;
}
int addFunc(int num1, int num2) {
	int addFunc;
	addFunc = num1 + num2;
	return addFunc;
}

Output:

ผลลัพธ์ของ C++ ฟังก์ชัน addFunc() ที่ส่งคืนผลรวม

นี่คือภาพหน้าจอของรหัส:

C++ โค้ดที่ส่งอาร์กิวเมนต์ไปยังฟังก์ชัน addFunc()

Code คำอธิบาย:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมของเราเพื่อใช้ฟังก์ชันต่างๆ
  2. รวมเนมสเปซมาตรฐานไว้ในโค้ดของเราเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
  3. ประกาศฟังก์ชันชื่อ addFunc() ที่รับพารามิเตอร์จำนวนเต็มสองตัว สิ่งนี้จะสร้างต้นแบบฟังก์ชัน
  4. เรียกใช้ฟังก์ชัน main() ควรเพิ่มตรรกะของโปรแกรมภายในเนื้อหาของฟังก์ชันนี้
  5. ประกาศตัวแปรจำนวนเต็ม 3 ตัว ได้แก่ x, y และผลรวม
  6. พิมพ์ข้อความบนคอนโซล ข้อความจะขอให้ผู้ใช้ป้อนตัวเลขสองตัว
  7. อ่านข้อมูลที่ผู้ใช้ป้อนจากแป้นพิมพ์ ผู้ใช้ควรป้อนตัวเลขสองตัวสำหรับตัวแปร x และ y โดยคั่นด้วยช่องว่าง
  8. เรียกใช้ฟังก์ชัน addFunc() และส่งพารามิเตอร์ x และ y ให้กับฟังก์ชัน ฟังก์ชันจะดำเนินการกับพารามิเตอร์เหล่านี้และกำหนดเอาต์พุตให้กับตัวแปร sum
  9. พิมพ์ค่าของตัวแปร x, y และผลรวมบนคอนโซลควบคู่ไปกับข้อความอื่นๆ
  10. ฟังก์ชันจะต้องคืนค่าเมื่อดำเนินการเสร็จสิ้น
  11. ส่วนท้ายของฟังก์ชัน main()
  12. นิยามฟังก์ชัน เรากำลังกำหนดฟังก์ชัน addFunc() เราจะระบุว่าฟังก์ชันจะทำอะไรภายในร่างกายของมัน { }
  13. การประกาศตัวแปรจำนวนเต็มชื่อ addFunc
  14. การเพิ่มค่าของพารามิเตอร์ num1 และ num2 และกำหนดผลลัพธ์ให้กับตัวแปร addFunc
  15. ฟังก์ชัน addFunc() ควรส่งคืนค่าของตัวแปร addFunc
  16. จุดสิ้นสุดของเนื้อความของฟังก์ชัน นั่นคือ คำจำกัดความของฟังก์ชัน

คำถามที่พบบ่อย

การส่งค่าแบบ Call by value จะคัดลอกค่าของอาร์กิวเมนต์ ดังนั้นการเปลี่ยนแปลงภายในฟังก์ชันจะไม่ส่งผลกระทบต่อค่าเดิม ส่วนการส่งค่าแบบ Call by reference จะส่งตัวแปรโดยใช้เครื่องหมาย & คั่น ทำให้ฟังก์ชันสามารถแก้ไขค่าของผู้เรียกได้โดยตรง C++ โดยค่าเริ่มต้นจะเรียกใช้ฟังก์ชันโดยส่งค่า (call by value)

การโอเวอร์โหลดฟังก์ชันช่วยให้สามารถใช้ฟังก์ชันหลายฟังก์ชันที่มีชื่อเดียวกัน แต่แตกต่างกันที่จำนวนหรือชนิดของพารามิเตอร์ คอมไพเลอร์จะเลือกเวอร์ชันที่ถูกต้องจากอาร์กิวเมนต์ที่คุณส่งเข้ามา ซึ่งช่วยเพิ่มความอ่านง่ายสำหรับการดำเนินการที่เกี่ยวข้อง

ฟังก์ชันแบบอินไลน์จะขอให้คอมไพเลอร์แทรกเนื้อหาของฟังก์ชันลงในแต่ละจุดที่เรียกใช้ แทนที่จะเรียกใช้แบบปกติ วิธีนี้สามารถช่วยลดภาระการทำงานของฟังก์ชันขนาดเล็กได้ แม้ว่าคอมไพเลอร์อาจจะไม่สนใจคำแนะนำนี้ก็ตาม

ฟังก์ชันเรียกตัวเอง (recursive function) จะเรียกตัวเองซ้ำไปเรื่อยๆ ทำให้ปัญหาใหญ่ถูกแบ่งออกเป็นปัญหาย่อยๆ จึงจำเป็นต้องมีกรณีพื้นฐาน (base case) ที่หยุดการเรียกตัวเองซ้ำนั้น มิฉะนั้นการเรียกจะวนซ้ำไปเรื่อยๆ จนทำให้หน่วยความจำสแต็กเต็ม การคูณแฟกทอเรียลเป็นตัวอย่างคลาสสิกของฟังก์ชันประเภทนี้

คุณส่งพารามิเตอร์เป็นตัวชี้หรืออาร์เรย์ที่มีขนาด และโดยปกติจะส่งความยาวแยกต่างหาก เนื่องจากอาร์เรย์จะแปลงเป็นตัวชี้ ดูวิธีการส่งผ่านพารามิเตอร์ได้ที่นี่ อาร์เรย์ใน C++ ฟังก์ชั่น สำหรับตัวอย่างการใช้งานที่สมบูรณ์

ฟังก์ชันจะส่งคืนค่าเดียวโดยตรง แต่คุณสามารถส่งคืนหลายค่าได้โดยใช้พารามิเตอร์อ้างอิงเอาต์พุต โครงสร้าง (struct) คู่ค่ามาตรฐาน (std::pair) ทูเพิลมาตรฐาน (std::tuple) หรือเวกเตอร์มาตรฐาน (std::vector) จากนั้นการผูกโครงสร้างจะแยกทูเพิลที่ส่งคืนออกมา ณ จุดที่เรียกใช้ฟังก์ชัน

ใช่แล้ว ผู้ช่วยเขียนโค้ด AI จะแปลงความคิดเห็นที่เป็นภาษาธรรมดาให้กลายเป็นโค้ดที่สมบูรณ์ C++ ฟังก์ชันนี้จะแนะนำรูปแบบการเรียกใช้ เนื้อหา และประเภทค่าส่งคืน นอกจากนี้ยังช่วยปรับโครงสร้างฟังก์ชันที่ยาวให้เหมาะสมได้อีกด้วย แต่คุณควรตรวจสอบตรรกะที่สร้างขึ้นก่อน

นักบิน GitHub การเติมคำอัตโนมัติ C++ ระบบจะกำหนดฟังก์ชัน สร้างต้นแบบ และเรียกใช้ฟังก์ชันจากความคิดเห็นหรือชื่อที่คุณระบุ เสนอการโอเวอร์โหลด และร่างการทดสอบหน่วย โดยใช้ไฟล์เฮดเดอร์ที่อ้างอิงเพื่อเป็นบริบท แต่ทุกข้อเสนอแนะยังคงต้องได้รับการตรวจสอบ

สรุปโพสต์นี้ด้วย: