การส่งคืนสตริงจากฟังก์ชัน C

Kar Sng Khun String Cak Fangkchan C



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

บทความนี้มุ่งเน้นไปที่การดำเนินการดังกล่าวใน สตริง โครงสร้างข้อมูลซึ่งส่งคืนไฟล์ สตริง จากฟังก์ชัน C







การส่งคืนสตริงจากฟังก์ชัน C

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



คุณสามารถดูตัวอย่างด้านล่างเพื่อความเข้าใจที่ดีขึ้น



#รวม

ถ่าน * ชื่อของฉัน ( ) {
กลับ 'จอห์น' ;
}

int หลัก ( เป็นโมฆะ ) {
พิมพ์ฉ ( '%s' , ชื่อของฉัน ( ) ) ;
}





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

เอาต์พุต




ฟังก์ชัน AC ไม่สามารถคืนค่า a ได้ สตริง ที่ระบุเป็นตัวแปรโลคัล เนื่องจากตัวแปรจะถูกลบออกทันที (รีลีส) เมื่อฟังก์ชันทำงานเสร็จสิ้น ทำให้ไม่พร้อมใช้งานและทริกเกอร์คำเตือนดังต่อไปนี้:

#รวม

const ถ่าน myName ( ) {
ชื่อถ่าน = 'จอห์น' ;
กลับ ชื่อ;
}

int หลัก ( เป็นโมฆะ ) {
พิมพ์ฉ ( '%s' , ชื่อของฉัน ( ) ) ;
}

ในรหัสนี้ ก คำเตือน ถูกทริกเกอร์เมื่อสตริงถูกส่งคืน ปราศจาก ตัวชี้ใดๆ

เอาต์พุต


ดังนั้น คุณสามารถเขียนโค้ดได้ดังนี้:

#รวม

ถ่าน * ชื่อของฉัน ( ) {
ถ่าน * ชื่อ = 'จอห์น' ;
กลับ ชื่อ;
}
int หลัก ( เป็นโมฆะ ) {
พิมพ์ฉ ( '%s' , ชื่อของฉัน ( ) ) ;
}

เอาต์พุต


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

บทสรุป

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