แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

สรุป:

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

Top