ทุกสิ่งที่คุณต้องการรู้เกี่ยวกับฟังก์ชันใน C?



บทความนี้จะแนะนำแนวคิดที่เรียบง่าย แต่เป็นพื้นฐานและสำคัญมากนั่นคือฟังก์ชันใน C และติดตามด้วยการสาธิต

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

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





ให้เราเริ่มต้นด้วยคำถามพื้นฐานที่สุด

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

ฟังก์ชั่นเหมือนกับภาษา C เหมือนกับภาษาโปรแกรมอื่น ๆ เป็นชุดรหัสที่ผูกเข้าด้วยกันเพื่อทำงานเฉพาะ ชุดรหัสที่จะดำเนินการระบุไว้ในวงเล็บปีกกานั่นคือ '{}'



ก่อนที่จะเรียนรู้วิธีการเขียนฟังก์ชันใน C มาทำความเข้าใจก่อนว่าข้อดีคืออะไร

ข้อดีของฟังก์ชันใน C

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

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



ฟังก์ชันยังมีสิ่งที่เป็นนามธรรมซึ่งเราสามารถเรียกใช้ฟังก์ชันและรับผลลัพธ์โดยไม่ทราบถึงการนำไปใช้งานภายใน

ไปกับประเภทของฟังก์ชัน C

ประเภทของฟังก์ชันใน C

มีฟังก์ชันสองประเภท:
ฟังก์ชั่นห้องสมุด
ฟังก์ชันที่ผู้ใช้กำหนดเอง

ฟังก์ชันไลบรารีคือฟังก์ชันที่กำหนดไว้แล้วในไลบรารี C เช่น strcat (), printf (), scanf () เป็นต้นคุณเพียงแค่ต้องรวมไฟล์ส่วนหัวที่เหมาะสมเพื่อใช้ฟังก์ชันเหล่านี้
ฟังก์ชันที่ผู้ใช้กำหนดคือฟังก์ชันที่กำหนดโดยผู้ใช้ ฟังก์ชันเหล่านี้สร้างขึ้นเพื่อให้โค้ดใช้ซ้ำได้และเพื่อประหยัดเวลาและพื้นที่

ตอนนี้เราได้ทราบถึงประโยชน์ของการสร้างฟังก์ชันแล้วเรามาทำความเข้าใจวิธีการประกาศฟังก์ชันใน C

การประกาศฟังก์ชันและคำจำกัดความ

การประกาศฟังก์ชัน:

ไวยากรณ์ของการประกาศฟังก์ชัน:

return_type function_name (data_type arg1, data_type arg2) int add (int x, int y) // การประกาศฟังก์ชัน

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

ในการประกาศฟังก์ชันการระบุชื่อของพารามิเตอร์เป็นทางเลือก แต่จำเป็นต้องระบุประเภทข้อมูล

int add (int, int) // การประกาศฟังก์ชัน

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

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

 ภาพ - ฟังก์ชั่นใน C- Edureka
int add (int, int) // การประกาศฟังก์ชัน return_type function_name (พารามิเตอร์) {Function body}

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

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

  • ประเภทผลตอบแทน: Return type คือชนิดข้อมูลของค่าที่ฟังก์ชันจะส่งคืน ฟังก์ชันอาจส่งคืนค่าหรือไม่ก็ได้ หากเป็นเช่นนั้นควรระบุชนิดข้อมูลของค่า retuning มิฉะนั้นประเภทการส่งคืนจะต้องเป็นโมฆะ

  • ชื่อฟังก์ชัน: นี่คือชื่อของฟังก์ชันที่ใช้ซึ่งเราสามารถเรียกใช้ฟังก์ชันเมื่อ & ที่ต้องการได้

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

ฟังก์ชั่นร่างกาย: เนื้อความของฟังก์ชันคือชุดของคำสั่งที่ทำหน้าที่เฉพาะ กำหนดว่าฟังก์ชันทำอะไร

ตัวอย่าง:

int เพิ่ม (int x, int y) {int sum = x + y return (sum)}

ขอแนะนำให้ประกาศฟังก์ชันก่อนกำหนดและใช้งาน ในภาษา C เราสามารถประกาศและกำหนดฟังก์ชันได้ที่เดียวกัน

ตัวอย่าง:

#include int add (int, int) // function declaration // function definition int add (int x, int y) // function header {// function body int sum = x + y return (sum)} // ฟังก์ชันหลัก int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

ดังที่เราเห็นในตัวอย่างข้างต้นว่าเรากำลังเรียกใช้ฟังก์ชันโดยใช้คำสั่ง int sum = add (23, 31) ค่าที่ส่งคืนจากฟังก์ชันจะถูกเก็บไว้ในตัวแปรผลรวม

ก่อนที่เราจะก้าวไปข้างหน้ามีแนวคิดที่สำคัญอีกประการหนึ่งที่ต้องทำความเข้าใจเกี่ยวกับพาราเมนต์ พารามิเตอร์มีสองประเภท:

พารามิเตอร์ที่แท้จริง : พารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชันในขณะที่เรียกใช้เรียกว่าพารามิเตอร์จริง ตัวอย่างเช่น 23 & 31 ในตัวอย่างข้างต้นเป็นพารามิเตอร์จริง

พารามิเตอร์ทางการ : พารามิเตอร์ที่ฟังก์ชันได้รับเรียกว่าพารามิเตอร์ทางการ ตัวอย่างเช่น x & y ในตัวอย่างข้างต้นเป็นพารามิเตอร์ที่เป็นทางการ

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

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

มีสองวิธีที่เราสามารถเรียกใช้ฟังก์ชัน:

  • โทรตามค่า
  • โทรตามข้อมูลอ้างอิง

โทรตามค่า

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

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

ตัวอย่าง:

#include โมฆะ Call_By_Value (int num1) {num1 = 42 printf ('nInside Function, Number is% d', num1)} int main () {int num num = 24 printf ('nBefore Function, Number is% d', num ) Call_By_Value (num) printf ('nAfter Function, Number is% dn', num) return 0}

เอาต์พุต

ในตัวอย่างข้างต้นก่อนฟังก์ชัน call by value ค่าของ num คือ 24 จากนั้นเมื่อเราเรียกใช้ฟังก์ชันและส่งผ่านค่าและเปลี่ยนค่าภายในฟังก์ชันจะกลายเป็น 42 เมื่อเรากลับมา & พิมพ์ค่าอีกครั้ง ของ num ในฟังก์ชันหลักกลายเป็น 24

โทรตามข้อมูลอ้างอิง

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

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

ใน C เราใช้พอยน์เตอร์เพื่อใช้การโทรโดยการอ้างอิง ดังที่คุณเห็นในตัวอย่างด้านล่างฟังก์ชัน Call_By_Reference คาดหวังให้ตัวชี้เป็นจำนวนเต็ม

ตอนนี้ตัวแปร num1 นี้จะเก็บที่อยู่หน่วยความจำของพารามิเตอร์จริง ดังนั้นในการพิมพ์ค่าที่เก็บไว้ในที่อยู่หน่วยความจำที่ชี้ด้วย num1 เราจำเป็นต้องใช้ตัวดำเนินการ dereference เช่น * ดังนั้นค่าของ * num1 คือ 42

ตัวดำเนินการที่อยู่ & ใช้เพื่อรับที่อยู่ของตัวแปรประเภทข้อมูลใด ๆ ดังนั้นในคำสั่งเรียกฟังก์ชัน 'Call_By_Reference (& num)' ที่อยู่ของ num จะถูกส่งผ่านเพื่อให้สามารถแก้ไข num ได้โดยใช้ที่อยู่

ตัวอย่าง

#include // นิยามฟังก์ชันเป็นโมฆะ Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Main Function int main () {int num num = 24 printf ( 'nBefore Function, Number is% d', num) Call_By_Reference (& num) printf ('nAfter Function, Number is% dn', num) return 0}

เอาต์พุต

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

ความแตกต่างระหว่างหุ่นกับเชฟ

ไปกับประเภทของฟังก์ชันที่ผู้ใช้กำหนดเองใน C

ประเภทของผู้ใช้กำหนด ฟังก์ชัน ใน C

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

ดำเนินการต่อโดยไม่มีการส่งผ่านอาร์กิวเมนต์และไม่มีค่าส่งคืน

1. ไม่มีการส่งผ่านข้อโต้แย้งและไม่มีค่าส่งคืน

ไวยากรณ์:

การประกาศฟังก์ชัน:

ฟังก์ชันโมฆะ () เรียกฟังก์ชัน: ฟังก์ชัน () นิยามฟังก์ชัน: ฟังก์ชันโมฆะ () {คำสั่ง}

ตัวอย่าง

#include โมฆะ add () โมฆะ add () {int x = 20 int y = 30 int sum = x + y printf ('sum% d', sum)} int main () {add () return 0}

ดำเนินการต่อโดยไม่มีการส่งผ่านข้อโต้แย้ง แต่เป็นค่าที่ส่งคืน

2 ไม่มีการส่งผ่านข้อโต้แย้ง แต่เป็นค่าที่ส่งคืน

ไวยากรณ์:

การประกาศฟังก์ชัน:

ฟังก์ชัน int () เรียกฟังก์ชัน: ฟังก์ชัน () นิยามฟังก์ชัน: ฟังก์ชัน int () {คำสั่งส่งคืน a}

ตัวอย่าง:

#include int add () int add () {int x = 20 int y = 30 int sum = x + y return (sum)} int main () {int sum sum = add () printf ('sum% d', ผลรวม) ส่งคืน 0}

ดำเนินการต่อโดยส่งผ่านอาร์กิวเมนต์ แต่ไม่มีค่าส่งคืน

3 อาร์กิวเมนต์ผ่าน แต่ไม่มีค่าส่งคืน

ไวยากรณ์:

การประกาศฟังก์ชัน:

ฟังก์ชันโมฆะ (int) การเรียกฟังก์ชัน: ฟังก์ชัน (a) นิยามฟังก์ชัน: ฟังก์ชันโมฆะ (int a) {คำสั่ง}

ตัวอย่าง:

#include void add (int, int) void add (int x, int y) {int sum = x + y return (sum)} int main () {add (23, 31) return 0}

ดำเนินการต่อโดยส่งผ่าน Argument และส่งคืนค่า

4 อาร์กิวเมนต์ผ่านและค่าส่งคืน

ไวยากรณ์:

การประกาศฟังก์ชัน:

ฟังก์ชัน int (int) การเรียกฟังก์ชัน: ฟังก์ชัน (a) นิยามฟังก์ชัน: ฟังก์ชัน int (int a) {คำสั่งส่งกลับ a}

ตัวอย่าง

#include int add (int, int) int add (int x, int y) {int sum = x + y return (sum)} int main () {int sum = add (23, 31) printf ('% d' , ผลรวม) ส่งคืน 0}

ตอนนี้ให้เราดูฟังก์ชันไลบรารี C ซึ่งมีความสำคัญในการเขียนโปรแกรมอย่างรวดเร็ว

C ฟังก์ชั่นไลบรารี

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

ตัวอย่างเช่นในการใช้ฟังก์ชัน printf / scanf เราจำเป็นต้องรวม stdio.h ไว้ในโปรแกรมของเราซึ่งมีฟังก์ชันเกี่ยวกับอินพุต / เอาต์พุตมาตรฐาน

ต่อไปนี้เป็นรายการไฟล์ส่วนหัว

หนึ่งstdio.hไฟล์ส่วนหัวอินพุต / เอาต์พุตมาตรฐาน
2การสร้างเหรียญ hไฟล์ส่วนหัวอินพุต / เอาต์พุตคอนโซล
3สตริง hสตริงที่เกี่ยวข้องกับฟังก์ชันไลบรารีเช่น gets (), puts () ฯลฯ
4stdlib.hฟังก์ชันห้องสมุดทั่วไปเช่น malloc (), calloc (), exit () เป็นต้น
5คณิตศาสตร์ hฟังก์ชันที่เกี่ยวข้องกับการดำเนินการทางคณิตศาสตร์เช่น sqrt (), pow () เป็นต้น
6เวลา hฟังก์ชันเกี่ยวกับเวลา
7ctype.hฟังก์ชันการจัดการอักขระ
8stdarg.hฟังก์ชันอาร์กิวเมนต์ตัวแปร
9สัญญาณ hฟังก์ชั่นการจัดการสัญญาณ
10setjmp.hฟังก์ชั่นกระโดด
สิบเอ็ดlocale.hฟังก์ชันโลแคล
12errno.hเกิดข้อผิดพลาดในการจัดการฟังก์ชัน
13ยืนยัน hฟังก์ชั่นการวินิจฉัย

หลังจากผ่านฟังก์ชั่น C ข้างต้นแล้วคุณจะเข้าใจความแตกต่างของฟังก์ชันแต่ละอย่างและวิธีการใช้งานในภาษา C ฉันหวังว่าบล็อกนี้จะให้ข้อมูลและเพิ่มมูลค่าให้กับคุณ

ดังนั้นเราจึงมาถึงตอนท้ายของบทความนี้เกี่ยวกับ 'ฟังก์ชันใน C' หากคุณต้องการเรียนรู้เพิ่มเติมโปรดดูไฟล์ บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ได้รับการออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อกนี้และเราจะติดต่อกลับโดยเร็วที่สุด