งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Chapter 7 ขอบเขตของตัวแปร Variable Scope.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Chapter 7 ขอบเขตของตัวแปร Variable Scope."— ใบสำเนางานนำเสนอ:

1 Chapter 7 ขอบเขตของตัวแปร Variable Scope

2 ตัวแปร (variable) จำแนกได้ 2 แบบ Data type Storage class integer
floating-point number character Storage class automatic external static register

3 Storage class ตัวอย่างการประกาศตัวแปร storage class auto int a, b, c;
extern float, point1, point2; static int count = 0; extern char star;

4 ตัวแปรอัตโนมัติ Automatic variables
ประกาศในฟังก์ชันเสมอ เป็นตัวแปรเฉพาะที่ในฟังก์ชันที่ประกาศ ใช้งานได้ภายในฟังก์ชัน ถ้าถูกประกาศในฟังก์ชันหนึ่ง ก็จะไม่เกี่ยวข้องกับตัวแปรในอีกฟังก์ชันหนึ่งที่มีชื่อเดียวกัน ตัวแปรใดๆที่ประกาศในฟังก์ชัน โดยไม่ประกาศว่าเป็นตัวแปรแบบใด จะถือเป็นตัวแปรอัตโนมัติ ดังนั้นในการประกาศอาจจะมี autoหรือไม่ก็ได้

5 ตัวแปรภายนอก external (global) variables
กำหนดไว้นอกฟังก์ชัน (รวมทั้ง main()) ใช้งานได้ตั้งแต่ตำแหน่งที่ประกาศ ไปจนถึงบรรทัดสุดท้าย ซึ่งอาจครอบคลุมหลายฟังก์ชัน ช่วยในการส่งข้อมูลระหว่างฟังก์ชัน แบ่งเป็น 2 ชนิด external variable definition external variable declaration

6 ตัวแปรภายนอก external variable definition
อาจจะใส่ extern หรือไม่ก็ได้ (บางคอมไพเลอร์ไม่อนุญาตให้ใส่ extern) เนื่องจากจะถูกกำหนดตามตำแหน่งของตัวแปร สามารถกำหนดค่าเริ่มต้น (เป็นค่าคงที่ ไม่ใช่นิพจน์)ได้ ถ้าฟังก์ชันสามารถใช้ตัวแปรภายนอกที่ได้ถูกกำหนดไว้ก่อนแล้วในโปรแกรม

7 ตัวแปรภายนอก external variable declaration
ชื่อของตัวแปรภายนอกต้องตรงกับ external variable definition ที่อยู่นอกฟังก์ชัน ไม่สามารถกำหนดค่าเริ่มต้นได้

8 external variable definition
external variable declaration

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

10 float a, b, c; void dummy (void); main () {static float a; } void dummy (void) {static int a; int b; a, b, c เป็น external floating point a ถูกกำหนดซ้ำเป็น static ใน main ดังนั้น b และ c จึงเป็นตัวแปรภายนอกเพียง 2 ตัวเท่านั้นที่ใช้ได้ใน main และ c ก็เป็นตัวแปรภายนอกเพียงตัวเดียวที่ใช้ได้ใน dummy

11

12

13 External static variables

14 Register variables ใช้เพื่อให้คอมไพเลอร์นำตัวแปรเฉพาะที่ไปเก็บไว้ในรีจิสเตอร์ แทนการนำไปเก็บไว้ใน ความจำปกติ จะช่วยให้การประมวลผลเร็วขึ้น

15 Local Variable & Main()
ตัวแปรเฉพาะที่ (local variable) ของ main() จะถูกสร้างเมื่อโปรแกรมเริ่มทำงาน จะถูกทำลายไปเมื่อโปรแกรมจบการทำงาน ดังนั้น automatic local และ static local variable จึงไม่มีความแตกต่างกัน

16 Storage class keyword Life time where scope automatic temporary
in a function local static Register external permanent outside a function global external static

17 Local variables and blocks

18 Multifile Programs ในโปรแกรมหลายแฟ้ม ฟังก์ชันอาจเป็นชนิด external หรือ static external function (มี extern ที่หน้าฟังก์ชัน) จะเป็นที่รู้จักตลอดทั้งโปรแกรม static function (มี static ที่หน้าฟังก์ชัน) จะเป็นที่รู้จักเฉพาะภายในแฟ้มที่กำหนดฟังก์ชันนั้น ถ้าไม่มี extern หรือ static ที่หน้าฟังก์ชัน ถือว่าเป็น external function

19 Function declaration Storage-class data-type name (type1 para1, type2 para2, …) extern int datacheck (int p, float q)

20 Project building เพื่อกระทำการโปรแกรมหลายแฟ้ม ต้องสร้าง project

21 output เป็น extern storage-class
จึงต้องถูกเรียกจากภายนอก ดังนั้นจึงต้องใช้ extern ทั้งใน function declaration(file1.cpp) และ function definition(file2.cpp) แต่เนื่องจาก extern เป็น default storage class จึงสามารถละได้

22

23

24 Variable definition in a multifile program
ภายในโปรแกรมหลายแฟ้ม external variable ที่กำหนดไว้ในแฟ้มหนึ่ง สามารถถูกเข้าถึงจากแฟ้มอื่น external variable definition ปรากฎได้เพียงแฟ้มเดียว คือ ภายนอกของ function definition ปกติมักอยู่ที่จุดเริ่มต้นของแฟ้ม ก่อน function definition แรก external variable definition สามารถกำหนดค่าเริ่มต้นได้ แต่ถ้าไม่กำหนดจะมีค่าเริ่มต้นเป็น ศูนย์ ไม่ต้องใส่ extern ใน definition เพราะตัวแปรจะถูกรู้จักด้วยตำแหน่งของตัวแปรภายในแฟ้มที่กำหนด

25 Variable declaration in a multifile program
ตัวแปรต้องถูกประกาศภายในแฟ้ม เพื่อให้สามารถเข้าถึง external variable ในอีกแฟ้มหนึ่ง โดยประกาศไว้ที่ใดก็ได้ภายในแฟ้ม แต่ปกติมักประกาศไว้ที่ต้นแฟ้ม ก่อน function definition แรก ต้องขึ้นต้นด้วย extern ไม่สามารถกำหนดค่าเริ่มต้น ค่าที่กำหนดสามารถเปลี่ยนแปลงได้ภายในแฟ้มที่รู้จักตัวแปร แฟ้มอื่นสามารถรับรู้การเปลี่ยนแปลงได้

26 FILEA กำหนดให้ a, b, c เป็น external variable มีค่าเริ่มต้น 1,2,3

27 กรณีที่ไม่เปิด project ไม่สามารถคอมไพล์ได้


ดาวน์โหลด ppt Chapter 7 ขอบเขตของตัวแปร Variable Scope.

งานนำเสนอที่คล้ายกัน


Ads by Google