ก สตริง เป็นลำดับของอักขระซึ่งประกอบด้วยอักขระตัวเดียวหรือหลายตัวและเป็นโครงสร้างข้อมูลที่สำคัญในการเขียนโปรแกรมคอมพิวเตอร์ เมื่อทำงานร่วมกับ สตริง ใน C จำเป็นต้องมีการดำเนินการบางอย่างใน สตริง ประเภทข้อมูล เช่น การเริ่มต้น สตริง , การกำหนดเนื้อหา , เชื่อมระหว่าง สตริง การเปรียบเทียบ สตริง และส่งคืน สตริง .
บทความนี้มุ่งเน้นไปที่การดำเนินการดังกล่าวใน สตริง โครงสร้างข้อมูลซึ่งส่งคืนไฟล์ สตริง จากฟังก์ชัน C
การส่งคืนสตริงจากฟังก์ชัน C
เช่น สตริง เป็นอาร์เรย์ของอักขระและเพื่อส่งคืนสตริงจากฟังก์ชัน C ตัวชี้ไปยังโครงสร้างข้อมูลสตริงจำเป็นต้องส่งผ่านเป็นอาร์กิวเมนต์จากฟังก์ชันการเรียกไปยังฟังก์ชันที่เรียกเป็นพารามิเตอร์ ตัวชี้สามารถใช้ชี้ไปที่อาร์เรย์ของอักขระได้ เมื่อตัวชี้ชี้ไปที่อาร์เรย์ของอักขระแล้ว สตริง สามารถคืนค่าจากฟังก์ชันที่เรียกใช้โดยใช้คำสั่ง return
คุณสามารถดูตัวอย่างด้านล่างเพื่อความเข้าใจที่ดีขึ้น
#รวม
ถ่าน * ชื่อของฉัน ( ) {
กลับ 'จอห์น' ;
}
int หลัก ( เป็นโมฆะ ) {
พิมพ์ฉ ( '%s' , ชื่อของฉัน ( ) ) ;
}
ในโค้ดข้างต้น แทนที่จะประกาศตัวแปรเหมือนที่เราทำตามปกติ เราใช้พอยน์เตอร์กับมัน เพื่อที่ว่าเมื่อเราส่งคืนสตริงนี้ จะไม่มีข้อผิดพลาดเกิดขึ้น
เอาต์พุต
ฟังก์ชัน AC ไม่สามารถคืนค่า a ได้ สตริง ที่ระบุเป็นตัวแปรโลคัล เนื่องจากตัวแปรจะถูกลบออกทันที (รีลีส) เมื่อฟังก์ชันทำงานเสร็จสิ้น ทำให้ไม่พร้อมใช้งานและทริกเกอร์คำเตือนดังต่อไปนี้:
const ถ่าน myName ( ) {
ชื่อถ่าน = 'จอห์น' ;
กลับ ชื่อ;
}
int หลัก ( เป็นโมฆะ ) {
พิมพ์ฉ ( '%s' , ชื่อของฉัน ( ) ) ;
}
ในรหัสนี้ ก คำเตือน ถูกทริกเกอร์เมื่อสตริงถูกส่งคืน ปราศจาก ตัวชี้ใดๆ
เอาต์พุต
ดังนั้น คุณสามารถเขียนโค้ดได้ดังนี้:
ถ่าน * ชื่อของฉัน ( ) {
ถ่าน * ชื่อ = 'จอห์น' ;
กลับ ชื่อ;
}
int หลัก ( เป็นโมฆะ ) {
พิมพ์ฉ ( '%s' , ชื่อของฉัน ( ) ) ;
}
เอาต์พุต
ตัวแปรจะถูกจัดสรรบนสแต็กโดยค่าเริ่มต้น ซึ่งเป็นเหตุผลที่แท้จริงสำหรับข้อความข้างต้น อย่างไรก็ตาม เมื่อมีการประกาศพอยน์เตอร์ ค่าที่พอยน์เตอร์จะถูกจัดสรรบนฮีป ซึ่งจะไม่ถูกล้างหลังจากฟังก์ชันเสร็จสิ้น เมื่อจัดสรรหน่วยความจำแล้ว สำเนาของ สตริง ต้องสร้างจากตำแหน่งหน่วยความจำเดิมที่ชี้โดยตัวชี้และต้องส่งคืนสำเนาจากฟังก์ชันที่เรียก ฟังก์ชันการเรียกใช้จะควบคุมข้อมูลสตริงดั้งเดิม ในขณะที่ฟังก์ชันที่เรียกใช้จะรับผิดชอบในการเพิ่มพื้นที่ว่างที่จัดสรรไว้
บทสรุป
ฟังก์ชัน AC สามารถใช้ตัวชี้ไปที่ สตริง เป็นอาร์กิวเมนต์และส่งคืน สตริง ค่าอันเป็นผลมาจากการดำเนินการที่ดำเนินการภายในฟังก์ชันที่เรียกใช้ วิธีการบรรลุสิ่งนี้คือการใช้ตัวชี้ของถ่าน* ฟังก์ชันการโทรจะรับผิดชอบหน่วยความจำที่จัดสรรเพื่อจัดเก็บ สตริง ในขณะที่ฟังก์ชันที่เรียกใช้มีหน้าที่เพิ่มพื้นที่ว่างที่จัดสรร