สวัสดีและยินดีต้อนรับ.
ในการบรรยายครั้งนี้ ฉันอยากจะพูด เกี่ยวกับการส่งคืนข้อมูลจากฟังก์ชัน
ถึงตอนนี้เราก็รู้แล้วว่า ฟังก์ชั่นคือเรารู้ว่าทำไมมันถึงมีประโยชน์
เรารู้วิธีกำหนดฟังก์ชั่นที่เรา รู้วิธีส่งข้อมูลไปยังฟังก์ชัน
ตอนนี้เราต้องการที่จะพูดคุยเกี่ยวกับวิธีที่เรา สามารถส่งคืนข้อมูลจากฟังก์ชั่นซึ่งมีประโยชน์มากเช่นกัน
ในตัวอย่างก่อนหน้านี้ เมื่อเรา คูณสองจำนวน ฟังก์ชันคูณแสดงผลของ
การคำนวณที่เทอร์มินัล
จำไว้ว่าเรามีสิ่งนั้น คำสั่ง printf ในนั้น
นอกจากนี้เรายังมีตัวอย่างที่เรา ก่อนหน้านี้เป็นเพียงฟังก์ชันง่ายๆ
เราเพิ่งพิมพ์ data ภายในฟังก์ชัน
เราอยากสวยแทน นำมันออกไปที่นั่นเพราะมันทำมากกว่าหนึ่งสิ่งจริงๆ
มันพิมพ์ออกมาจริงๆ ข้อมูลถูกส่งกลับและพิมพ์ข้อมูลในฟังก์ชันหลัก
คุณอาจไม่ต้องการมี แสดงผลการคำนวณของคุณ
ฟังก์ชั่นมีมากขึ้น ยืดหยุ่น ทั่วไปมากขึ้น ซึ่งช่วยให้ใช้งานได้
มากขึ้นหากคุณสามารถส่งคืนข้อมูลได้
ฟังก์ชันจึงสามารถส่งคืนข้อมูลได้ โดยใช้ไวยากรณ์เฉพาะในค.
เราควรคุ้นเคยกับสิ่งนี้ นิดหน่อยเพราะจำหน้าที่หลักของเราที่มาก
end เรากำลังส่งคืนข้อมูลในตัวอย่างจำนวนมาก
ดังนั้นเราจึงได้สัมผัสกับสิ่งนี้เล็กน้อย
เราไม่ได้จริงๆ เข้าใจว่ามันหมายถึงอะไร
มาดูอีกเรื่องที่ รูปแบบทั่วไปของฟังก์ชัน
โปรดจำไว้ว่า ส่วนหัวของฟังก์ชันนี้
เรามีแบบส่งคืนซึ่งก็คือ คำที่กำหนดไว้ครั้งแรก
แล้วเราก็มีชื่อ แล้วก็ เรามีพารามิเตอร์คั่นด้วยเครื่องหมายจุลภาคภายในวงเล็บ
เรารู้แล้ว ชื่อและพารามิเตอร์
สิ่งแรกคือประเภทผลตอบแทน
ประเภทการส่งคืนระบุ ชนิดข้อมูลของค่าที่ส่งคืนโดยฟังก์ชัน
ฟังก์ชั่นสามารถส่งคืนข้อมูลประเภทใดก็ได้
คุณเพียงแค่ต้องแจ้งให้คอมไพเลอร์ทราบ คุณจะส่งคืนข้อมูลประเภทใด
มันคือ int, float, a double คุณต้องระบุสิ่งนั้นในส่วนหัวของฟังก์ชัน
ประเภทผลตอบแทน
แบบย้อนกลับที่เราเห็นตรงนี้ และคุณสามารถระบุประเภทของค่าที่จะส่งคืนโดยฟังก์ชัน
ตราบใดที่มันเป็นประเภททางกฎหมายในค.
ฉันกล่าวถึงสิ่งหลัก สองเท่า ลอยและอื่น ๆ
แต่กลับได้ การนับและตัวชี้
เราไม่ได้พูดถึงคำแนะนำ แต่ มันทำให้มีความยืดหยุ่นมากเมื่อคุณสามารถส่งคืนตัวชี้
ประเภทการส่งคืนสามารถ ยังควรหลีกเลี่ยงประเภท
คุณมักจะเห็นคำสำคัญนี้เป็นโมฆะ
ตอนนี้เราเข้าใจความหมายแล้ว
โมฆะหมายความว่าไม่มีข้อมูล กำลังจะถูกส่งกลับ
หากคุณเห็นความว่างเปล่าก่อน ชื่อของฟังก์ชัน คุณไม่ได้ส่งคืนข้อมูลใด
ๆ
หากคุณเห็นเป็นโมฆะภายในพารามิเตอร์ รายการ คุณไม่ได้ส่งข้อมูลใดๆ
โมฆะเป็นเพียงคำสำคัญทั่วไปที่ สำหรับประเภทการส่งคืนและพารามิเตอร์ คุณยังสังเกตเห็นว่าคุณสามารถใช้
void เป็นตัวชี้เช่นกัน แต่เราจะพูดถึงสิ่งนั้นเมื่อเราไปถึงสิ่งนั้น
แต่โมฆะเป็นวิธีการไม่พูดอะไร
และเหตุผลที่คุณรวม เป็นโมฆะเมื่อเทียบกับเพียงแค่ไม่รวมอะไรเพราะมัน
ทำให้โปรแกรมอ่านง่ายขึ้น
จริงๆแล้วเมื่อคุณส่งข้อมูลไปยังa ฟังก์ชั่นและคุณไม่มีข้อมูลที่ถูกส่งผ่านคุณสามารถมี
แค่วงเล็บว่าง
ง่ายต่อการอ่านถ้า คุณมีโมฆะในนั้น
เช่นเดียวกับประเภทการส่งคืน ยกเว้น the ประเภทส่งคืนคุณต้องมีโมฆะ
คุณไม่สามารถมีได้เพียงแค่ว่างเปล่า
โมฆะหมายความว่าไม่มีข้อมูล จะถูกส่งกลับ
คำสั่งส่งคืน
เราได้พูดคุยเกี่ยวกับวิธีที่คุณสามารถ ระบุข้อมูลที่จะส่งคืน แต่จะทำอย่างไร
คุณส่งคืนข้อมูลจริงๆ
ภายในร่างกายของฟังก์ชัน คุณ ต้องมีคำชี้แจงที่คุณสามารถพูดได้ว่าคุณกำลังจะคืนอะไร
เพราะจำร่างของเอ ฟังก์ชั่นสามารถมีข้อมูลจำนวนมาก
มันสามารถมีตัวแปรท้องถิ่น มันสามารถ มีทุกอย่างที่คุณรู้ว่าฟังก์ชันนี้สามารถทำการคำนวณเฉพาะได้
บางทีทำการคำนวณหลายครั้ง คุณต้องการส่งคืนอะไร
โชคดีที่มีข้อความนี้ ด้วยการส่งคืนคำหลัก
หากคุณให้ผลตอบแทน ไม่มีชื่อตัวแปรหลังหรือนิพจน์ หมายความว่าคุณ
เพียงแค่ออกจากฟังก์ชัน
มันคล้ายกับการแตกเป็นวง
คุณเพิ่งกลับมา จากฟังก์ชัน
และคุณสามารถให้สิ่งนี้ใน หน้าที่ถูกกำหนดให้เป็นโมฆะ
มันทำให้ชัดเจนเมื่อ คุณกำลังออกจากฟังก์ชัน
คุณควรมีจริงๆเท่านั้น ส่งคืนในจุดเดียวที่ด้านล่างของฟังก์ชัน
เราจะพูดถึงเรื่องนี้ในภายหลัง แต่คุณ ไม่สามารถมีได้ทุกที่ในฟังก์ชัน
ถ้าเห็นที่ไหนใน ฟังก์ชั่นหมายความว่าคุณกำลังกระโดดออกจากฟังก์ชั่นนั้น
เหตุผลที่ดีที่มี ที่ด้านล่างชัดเจนมากเมื่อคุณออกจากฟังก์ชัน
หากคุณมีผลตอบแทนหลายรายการ แม้ว่าคุณกำลังส่งคืนข้อมูลทั้งหมดตลอดฟังก์ชันของคุณ
มันคือ ยากที่จะพูดเมื่อคุณกลับมา
ดังนั้นสิ่งที่ฉันชอบทำในของฉัน ฟังก์ชั่นคือการสร้างตัวแปรและส่งคืนเพียงครั้งเดียวที่ด้านล่าง
ถ้าฉันต้องคืนของใน ฟังก์ชั่นหรือฉันหมายถึงในคำสั่ง if เฉพาะในฟังก์ชันหรือ
สิ่งที่ฉันจะตั้งค่าตัวแปรแล้วส่งคืนที่ด้านล่าง
ดังนั้นหากคุณกลับมาและคุณ ไม่มีอะไรหลังจากนั้น
นั่นก็หมายความว่าคุณกำลังออกจาก ทำงานโดยไม่มีข้อมูลกลับมา
นี้จริงๆไม่ได้ใช้มาก
ใช้เฉพาะในความว่างเปล่า ฟังก์ชั่นไม่คืนค่า
รูปแบบทั่วไปของ คำสั่ง return กำลังส่งคืนตัวแปรหรือนิพจน์บางส่วน
X บวก y หรือส่งคืน x
แบบฟอร์มการส่งคืนคำสั่งนี้มี เพื่อใช้กับประเภทการส่งคืนที่ระบุไว้ในส่วนหัวของฟังก์ชัน
หากคุณกำลังส่งคืน int ตัวแปรหรือนิพจน์ที่คุณส่งคืนต้องเป็น
int
มันต้องประเมินเป็น int, หากคุณกำลังส่งคืน int
ตอนนี้ถ้าคุณจะเปลี่ยนเป็นสองเท่า มันมีค่าเป็นสองเท่า
จำไว้ว่าคุณสามารถมีได้มากมาย ข้อมูลประเภทต่าง ๆ ที่ส่งคืน
ค่าที่ส่งคืน ให้กับโปรแกรมเรียกค่าที่ได้เมื่อ
นิพจน์ได้รับการประเมินดังนั้น
ถ้าคุณมี x บวก y มันจะกลับมา ผลลัพธ์ของนิพจน์นั้นและต้องเป็นแบบเดียวกับ
การประกาศฟังก์ชันตามที่ได้กล่าวมา
ฟังก์ชั่นที่มีประโยค ในตัวฟังก์ชันแต่ไม่คืนค่าต้องมี
กลับประเภทเป็นโมฆะต้อง.
คุณไม่สามารถมีสิ่งนั้นได้
หากคุณไม่มีสิ่งนั้นและคุณ ไม่ส่งคืนข้อมูลใด
ๆ คุณจะได้รับข้อความแสดงข้อผิดพลาด
เมื่อคุณคอมไพล์โปรแกรม และมีฟังก์ชั่นที่มีประเภทการส่งคืนเป็นโมฆะที่พยายาม
ส่งกลับค่าข้อผิดพลาดคอมไพเลอร์
โมฆะหมายถึงไม่มีข้อมูลส่งคืนอย่า ส่งกลับตัวแปรนิพจน์
หากฟังก์ชั่นไม่มีโมฆะ ประเภทการส่งคืนและมีประเภทการส่งคืนที่ถูกต้อง
คุณจะได้รับ an ข้อความแสดงข้อผิดพลาดหากคอมไพเลอร์พยายามส่งคืนประเภทที่แตกต่างจาก
ที่ระบุหรือหากพวกเขาเพิ่งกลับมาโดยไม่มีอะไรหลังจากนั้น
ดังนั้นให้ความสนใจกับสิ่งนี้
คำหลักเหล่านั้นในตอนต้นของ การประกาศการทำงานมีความสำคัญ
ส่งผลโดยตรงต่อการนำไปปฏิบัติ ของฟังก์ชันและคอมไพล์จะบอกคุณว่าสกรู ขึ้นและคุณไม่ส่งคืนข้อมูลที่ถูกต้องหรือถ้าคุณไม่ส่งคืนใด
ๆ data หรือหากคุณส่งคืนข้อมูลเมื่อคุณไม่ควรส่งคืนข้อมูล
ถ้านิพจน์ผลลัพธ์เป็นค่า ที่แตกต่างจากประเภทที่แตกต่างจากประเภทส่งคืนในฟังก์ชัน
ส่วนหัว c จะพยายามแปลง
คอมไพเลอร์จะพยายาม เพื่อแปลงหากทำได้
เช่น ถ้าคุณกลับมา float และนิพจน์ของคุณคือ I บวก x ด้วยสอง int
มันกำลังจะไป เพื่อแปลงเป็นทุ่นลอย
หากคุณกำลังส่งคืน int และ คุณมีนิพจน์ที่ทำการคำนวณแบบลอยตัวมัน
จะแปลงเป็นมัน
คุณจะสูญเสียข้อมูลในนั้น แต่จะทำการแปลง
เป็นไปไม่ได้เสมอไป เพื่อทำการแปลง
ในกรณีที่ไม่สามารถ คุณจะมีข้อผิดพลาดที่เกิดจากคอมไพเลอร์
หากคุณกำลังพยายามส่งคืน int เมื่อคุณควรจะคืนสตริงหรือเมื่อคุณพยายาม
เพื่อส่งคืนเมื่อคุณควรจะคืน enum มันคือ
จะไปบ่นคอมไพเลอร์
คุณสามารถมีได้มากกว่าหนึ่งรายการ ฟังก์ชัน return คำสั่ง
ฉันพูดถึงสิ่งนี้สั้น ๆ และ ทำไมคุณไม่อยากทำ
แต่คุณสามารถทำได้
คุณสามารถมีผลตอบแทนได้หลายครั้ง ตลอดการทำงาน
มันแค่ทำให้รหัสยากขึ้นเพื่อ ทำตามเพราะคุณกำลังกระโดดออกจากงานไปทุกที่
เมื่อคุณกลับมาและคุณมี คืนค่าหลายค่า ให้ตรวจสอบอีกครั้งถ้าคุณมีฟังก์ชัน
ที่ส่งคืนบางสิ่งบางอย่าง คุณมีนิพจน์หรือค่าของ
ชนิดนั้นๆ หรือแปลงได้
ตอนนี้ที่เราได้พูดถึง ส่งข้อมูลและส่งคืนข้อมูล
เรารู้วิธีเรียกใช้ฟังก์ชัน แต่ฉันอยากจะพูดอีกสองสามอย่างเกี่ยวกับการวิงวอน
คุณเรียกใช้ฟังก์ชันโดยใช้ ชื่อฟังก์ชันตามด้วยอาร์กิวเมนต์ที่คุณส่งผ่านคือ
ระหว่างวงเล็บ เรารู้ว่า ไกลแค่ไหนที่เรารู้ แต่ฉัน ต้องการระบุอย่างเป็นทางการ
นั่นคือวิธีที่คุณสามารถเรียกใช้ฟังก์ชันได้
เมื่อคุณเรียกใช้ฟังก์ชัน ค่าของอาร์กิวเมนต์ที่คุณระบุระหว่างวงเล็บ
จะถูกกำหนดให้กับพารามิเตอร์ภายในฟังก์ชัน
พารามิเตอร์เป็นตัวแทน ตัวแปรที่มีชนิดข้อมูล
คุณสามารถใช้ตัวแปรนั้นได้ ด้านใดด้านหนึ่งของฟังก์ชัน
เมื่อฟังก์ชันออกหรือดำเนินการ รหัสบางตัวจะใช้ค่าเหล่านั้นที่ให้มาเป็นอาร์กิวเมนต์ดังที่ฉันได้กล่าวไว้
อาร์กิวเมนต์ที่คุณระบุเมื่อคุณ การเรียกใช้ฟังก์ชันควรตกลงในหมายเลขประเภทและลำดับเมื่อ
พารามิเตอร์ในส่วนหัวของฟังก์ชัน
คำสั่งก็สำคัญ ฉันไม่ได้ เน้นว่า แต่ถ้ามันบอกว่า
int x double y คุณต้อง .ก่อน ผ่าน int แล้วดับเบิ้ล
คุณไม่สามารถผ่านใน double และ int
คำสั่งมีความเฉพาะเจาะจงมาก
ดังนั้นให้แน่ใจว่าคุณส่งข้อมูลเป็น อาร์กิวเมนต์เมื่อคุณเรียกใช้ฟังก์ชันในลักษณะเดียวกับฟังก์ชัน
ถูกประกาศในส่วนหัวของฟังก์ชันในรายการพารามิเตอร์ ผ่าน ประเภทที่เหมาะสมก็คือเช่นกัน
เรียกใช้ฟังก์ชันและ การกำหนดข้อมูลที่ส่งคืน
หากฟังก์ชันกำลังส่งคืนข้อมูล ฟังก์ชันสามารถกำหนดข้อมูลนั้นได้โดยใช้ตัวดำเนินการเท่ากับและหลัง
ผลตอบแทนเช่นกันหรือคุณสามารถเก็บไว้ในตัวแปรท้องถิ่นได้หากต้องการ
นอกจากนี้ยังจะทำงานกับนิพจน์
พูดได้เลยว่า return x plus y, คุณสามารถบอก return x, คุณสามารถบอก
return ค่าคงที่ได้
นี่คือตัวอย่างหลังจากคุณ เรียกใช้การโทรเมื่อคุณต้องการกำหนดข้อมูลที่ส่งคืน
ดังนั้นคุณสามารถพูดได้ว่า int x เท่ากับ my การเรียกใช้ฟังก์ชัน ไม่ว่าฟังก์ชันนั้นจะส่งคืนอะไรก็ตาม
จะถูกกำหนดให้กับ x
และถ้าการเรียกใช้ฟังก์ชันของฉันกลับมา x บวก y, ผลลัพธ์ของ x บวก
y จะถูกกำหนดให้กับ x
เพื่อให้คุณสามารถกำหนดข้อมูลที่ กลับจากการเรียกใช้ฟังก์ชันโดยเพียงแค่มีตัวแปรบน
ด้านซ้ายมือของค่าเท่ากับและการเรียกใช้ฟังก์ชันบน ด้านขวามือเท่ากับ
ฟังก์ชั่นการโทรไม่มี เพื่อรับรู้หรือประมวลผลค่าที่ส่งคืนจากฟังก์ชันที่เรียก
ไม่ต้องมี การมอบหมายงานที่นั่น
หากฟังก์ชันกำลังส่งคืนข้อมูลและ คุณไม่สนใจข้อมูลนั้น คุณไม่จำเป็นต้องมีค่าเท่ากันเลย
คุณสามารถเรียกใช้ฟังก์ชันได้
มันคงไม่สมเหตุสมผลนักเพราะ ถ้ามันส่งคืนข้อมูลแสดงว่าคุณอาจต้องดู
ได้ แต่คุณไม่จำเป็นต้องทำ
คอมไพเลอร์จะไม่ไป บ่นถ้าคุณเพิ่งเรียกใช้ฟังก์ชันและไม่จัดการข้อมูล
อยู่ที่ว่าคุณจะเป็นแบบไหน ต้องการใช้ข้อมูลที่ส่งคืนจากการเรียกใช้ฟังก์ชัน
นี่คือตัวอย่างการอัญเชิญ ฟังก์ชันและส่งคืนข้อมูลจากฟังก์ชัน
ในตัวอย่างนี้ ให้คูณตัวเลขสองตัว
นี่เป็นเหมือนตัวอย่างที่เรา มีก่อนหน้านี้ แต่ตัวอย่างก่อนหน้านี้ไม่ส่งคืนข้อมูลใด
ๆ
ตัวอย่างก่อนหน้านี้แสดงผล
ในตัวอย่างนี้ เรากำลัง ไม่แสดงผลใดๆ
เรากำลังส่งคืนข้อมูลและ จากนั้นเราจะแสดงผลในฟังก์ชันหลัก
นี่คือการคูณสองตัวเลขของเรา รับจำนวนเต็มสองตัวเป็นพารามิเตอร์
เราคูณจำนวนเต็มสองตัวนั้น
แล้วแทนที่จะพิมพ์สิ่งนี้ จำนวนเงินหรือมูลค่า เราใช้คีย์เวิร์ด return
และเราก็ได้ การระบุตัวแปรชื่อผลลัพธ์ จากนั้นเรามีเครื่องหมายอัฒภาคเพื่อสิ้นสุด
เมื่อคุณเห็นคีย์เวิร์ดส่งคืนนั้น ภายในตัวฟังก์ชัน คุณกำลังส่งคืนข้อมูลนั้น
และจำไว้ว่าคุณสามารถ มีหลายที่
แต่ได้คืนเดียวเท่านั้น ค่า คุณไม่สามารถคืนค่าหลายค่าได้
ดังนั้นหากคุณมีคีย์เวิร์ด return ใน หลายๆ ที่ มันต้องอยู่ใน
if statement หรือ loop เพราะ คุณกำลังกระโดดออกไปแล้ว
หากคุณมีผลตอบแทนตามด้วย กลับมาอีกครั้งมันจะทำให้คุณมีข้อผิดพลาดเพราะมันจะบอกว่าคุณ
มีสองผลตอบแทนในทั้งสองกรณี
คุณมักจะกลับมาที่ ผลลัพธ์ คุณไม่สามารถทำได้
แต่คีย์เวิร์ด return นั้นสำคัญ
คุณกำลังส่งคืนตัวแปร
แล้วคุณจะเห็นในหลัก ฟังก์ชันข้อมูลที่ถูกส่งกลับถูกกำหนดให้กับ
ตัวแปรท้องถิ่นอื่นที่เรียกว่าผลลัพธ์
คุณจะสังเกตเห็นว่าเรากำลังใช้ ชื่อเดียวกันนี่
สิ่งนี้เกี่ยวข้องกับฟังก์ชั่น ขอบเขตที่เราจะพูดถึงในการบรรยายครั้งต่อไป
local ตัวแปรกับตัวแปรทั่วโลก
ทั้งหมดที่คุณต้องใส่ใจ ในการบรรยายนี้คือความจริงที่ว่าฟังก์ชั่นนี้คูณ
ตัวเลขสองตัวกำลังส่งคืนข้อมูล
วิธีคืนก็คืนได้ โดยใช้คีย์เวิร์ด return ตามด้วยตัวแปรของนิพจน์
คุณยังสังเกตเห็นว่าการคูณ ตัวเลขสองตัวระบุประเภทการส่งคืนที่ด้านบนของส่วนหัวของฟังก์ชัน
มันกลับเป็น int
เลยต้องคืน int
คุณยังสังเกตเห็นว่าเมื่อเรามอบหมาย ข้อมูลในฟังก์ชันหลัก
เรากำลังกำหนดให้เป็น int
มอบหมายที่ง่ายมากเรา แค่มีตัวดำเนินการเท่ากับ
ถ้าเราไม่สนใจข้อมูล เรา ก็แค่โทรคูณสองตัวเลขแล้วไม่ทำอะไรกับมันเลย
หลังจากที่เราได้รับข้อมูลคืน จากฟังก์ชัน เราจะพิมพ์ออกมาโดยใช้ฟังก์ชัน
printf
ทำให้ฟังก์ชั่นมากขึ้น เหนียวแน่นที่จะใช้ข้อมูล
เราไม่ได้แสดงจริงๆ ผลลัพธ์ภายในฟังก์ชัน
มีบางครั้งที่เราไม่ต้องการ เพื่อแสดงผลลัพธ์เราแค่ต้องการคูณตัวเลขสองตัวแล้ว
เราอาจต้องการแบ่งสินค้า
ความยืดหยุ่นในการส่งข้อมูล และการส่งข้อมูลกลับเป็นเรื่องใหญ่
นี่เป็นตัวอย่างง่ายๆ
คุณจะได้สัมผัสกับ มากกว่านี้ในการท้าทายครั้งต่อไปของเรา