ความแตกต่างระหว่างตัวแปรท้องถิ่นและระดับโลก

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 18 ตุลาคม 2024
Anonim
Global and Local Variables - Delphi
วิดีโอ: Global and Local Variables - Delphi

เนื้อหา


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

ตัวแปรถูกจัดประเภทเป็น 'local' และ 'global' ซึ่งเป็นหัวข้อหลักของการสนทนาของเรา นี่คือความแตกต่างที่สำคัญระหว่างตัวแปรโลคอลและโกลบอลคือตัวแปรโลคัลถูกประกาศภายในบล็อกฟังก์ชัน ในทางตรงกันข้ามตัวแปรโกลบอลจะถูกประกาศนอกฟังก์ชั่นในโปรแกรม

มาศึกษาความแตกต่างระหว่างตัวแปรท้องถิ่นกับตัวแปรโกลบอลพร้อมกับกราฟเปรียบเทียบกัน

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อดี
  5. ข้อเสีย
  6. ข้อสรุป

ตารางเปรียบเทียบ:

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

นิยามของตัวแปรท้องถิ่น

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


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

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

บันทึก:
อย่างไรก็ตามมีวิธีการรักษาค่าของตัวแปรท้องถิ่นโดยใช้ตัวปรับเปลี่ยน 'คงที่'

ความหมายของตัวแปรทั่วโลก

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

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


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

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

ข้อดี

ตัวแปรท้องถิ่น

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

ตัวแปรทั่วโลก

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

ข้อเสีย

ตัวแปรท้องถิ่น

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

ตัวแปรทั่วโลก

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

สรุป:

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