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

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

ปฏิบัติการครั้งที่ 10 pointer. หน่วยความจำ หน่วยความจำนั้นเสมือนเป็นช่องว่างไว้เก็บ ของที่มีหมายเลขประจำติดไว้ที่แต่ละช่อง เพื่อใช้ในการระบุตำแหน่งของช่องได้

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


งานนำเสนอเรื่อง: "ปฏิบัติการครั้งที่ 10 pointer. หน่วยความจำ หน่วยความจำนั้นเสมือนเป็นช่องว่างไว้เก็บ ของที่มีหมายเลขประจำติดไว้ที่แต่ละช่อง เพื่อใช้ในการระบุตำแหน่งของช่องได้"— ใบสำเนางานนำเสนอ:

1 ปฏิบัติการครั้งที่ 10 pointer

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

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

4 การประกาศตัวแปร เมื่อมีการประกาศตัวแปรจะมีการจอง หน่วยความจำไว้ให้ ดังนั้นเราจึงจะอ้างถึง หน่วยความจำที่เราจองไว้เก็บข้อมูลผ่านด้วย ชื่อตัวแปร int x; FF01 FF02 FF03 FF04 ชนิดข้อมูล int มีการจองพื้นที่ 2 ไบต์

5 การขอดูแอดเดรสของตัวแปร แต่ถ้าเราอยากทราบว่าตัวแปรได้จอง หน่วยความจำที่เท่าใด สามารถทำได้ โดยใช้ ตัวดำเนินการ & void main(){ int x = 3; printf(“value is %d\n”,x); printf(“address is %x\n”,&x); } void main(){ int x = 3; printf(“value is %d\n”,x); printf(“address is %x\n”,&x); }

6 พอยน์เตอร์ (pointer) คือชนิดข้อมูลหนึ่งที่เก็บค่าแอดเดรสของตัว แปรอื่น ดังนั้นพอยน์เตอร์ไม่ว่าจะชี้ไปที่ตัวแปรใดก็จะ ใช้พื้นที่ในการเก็บเท่ากันเพราะสิ่งที่พอยน์ เตอร์เก็บคือค่าแอดเดรสของตัวแปรอื่น int x; int *p = &x; int x; int *p = &x; FF01 FF02 FF03 FF04 x p FF01

7 การกำหนดให้ตัวแปรเป็นชนิด พอยน์เตอร์ รูปแบบการกำหนดให้ตัวแปรเป็นชนิดพอยน์ เตอร์จะต้องระบุด้วยว่าสามารถชี้ไปหาตัวแปร ประเภทใด ชนิดข้อมูลที่อ้างถึง * ชื่อตัวชี้ ; int *a ; // กำหนดให้ a เป็นตัวชี้ชนิดข้อมูล int char *x,b ;// กำหนดให้ x เป็นตัวชี้ชนิดข้อมูล char // แต่ b เป็นตัวแปรชนิด char

8 การใช้เครื่องหมาย & int x = 17; int *pt_int; pt_int = &x; float salary = 12000.00; float *pt_float; pt_float = &salary; char letter = ‘w’; char *pt_char; pt_char = &letter; 01000370pt_intx 010017 01500400pt_floatsalary 015012000.00 02600430pt_charletter 0260‘w’

9 ตัวอย่างโปรแกรมที่ใช้ เครื่องหมาย & #include int x = 17; float salary = 12000.00; char letter = ‘w’; int *pt_int; float *pt_float; char *pt_char; main() { clrscr(); pt_int = &x; pt_float = &salary; pt_char = &letter; printf(“Address of variable x = %p\n”,pt_int); printf(“Address of variable salary = %p\n”,pt_float); printf(“Address of variable letter = %p\n”,pt_char); } Address of variable x = 00AA Address of variable salary = 00AC Address of variable letter = 00BC

10 ตัวอย่างโปรแกรมที่ใช้ เครื่องหมาย & #include int x = 17; float salary = 12000.00; char letter = ‘w’; int *pt_int; float *pt_float; char *pt_char; main() { clrscr(); pt_int = &x; pt_float = &salary; pt_char = &letter; printf(“Address of variable x = %p\n”,pt_int); printf(“Address of variable salary = %p\n”,pt_float); printf(“Address of variable letter = %p\n”,pt_char); } Address of variable x = 00AA Address of variable salary = 00AC Address of variable letter = 00BC

11 เครื่องหมาย * (Indirect Operator) เครื่องหมาย * ใช้เพื่อหาค่าข้อมูลจาก แอดเดรสที่ตัวแปรพอยเตอร์ชี้อยู่ ดังนั้น การใช้เครื่องหมาย * หน้าตัวแปร พอยน์เตอร์ย่อมหมายถึงค่าข้อมูลของตัวแปร ที่พอยน์เตอร์ชี้นั่นเอง

12 ความหมายของ indirect Operator เมื่อมีการเรียกใช้ * ชื่อตัวแปรพอยน์เตอร์ จะ เข้าไปดูที่ตัวแปรพอยน์เตอร์ว่าเก็บค่า ตำแหน่งใด แล้วจึงเข้าไปดึงค่าที่เก็บใน ตำแหน่งนั้นออกมาดำเนินการ 0A30 5 num 0400 0A30 p_num int num = 5; int *p_num; p_num = # printf(“%d”,*p_num); *p_num


ดาวน์โหลด ppt ปฏิบัติการครั้งที่ 10 pointer. หน่วยความจำ หน่วยความจำนั้นเสมือนเป็นช่องว่างไว้เก็บ ของที่มีหมายเลขประจำติดไว้ที่แต่ละช่อง เพื่อใช้ในการระบุตำแหน่งของช่องได้

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


Ads by Google