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

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

บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูล ชนิดพอยท์เตอร์

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


งานนำเสนอเรื่อง: "บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูล ชนิดพอยท์เตอร์"— ใบสำเนางานนำเสนอ:

1 บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูล ชนิดพอยท์เตอร์

2 พอยท์เตอร์ (Pointer) พอยท์เตอร์ คือ ตัวแปรซึ่งเก็บตำแหน่งของอีก ตัวแปรหนึ่ง ซึ่งจะมีขนาดตามตำแหน่ง machine และพอยท์เตอร์ต้องชี้ไปยัง type ของข้อมูลที่ แน่ชัด เป็นการเข้าถึงข้อมูลแบบ indirectly  รูปแบบการประกาศ type *var;

3 พอยท์เตอร์ (Pointer) ( ต่อ ) เช่น int *iptr; // เก็บตำแหน่งของตัวแปรอื่นที่ เป็น integer char *cptr // เก็บตำแหน่งของตัวแปรอื่นที่ เป็น character iptr integer var cptr char var

4 ตัวดำเนินการ ในภาษาซี ได้มีการกำหนดตัวดำเนินการ 2 ชนิดที่ เกี่ยวกับพอยท์เตอร์ ดังนี้  * หมายถึง indirect operator เป็นการประกาศใช้ตัวแปรพอยท์เตอร์นั้นละยังสามารถ ใช้เพื่อเข้าถึงเนื้อที่ของหน่วยความจำที่ตัวแปรนั้นชี้  & หมายถึง address operator เป็นตัวดำเนินการที่ใช้เพื่อบอกตำแหน่งของตัวแปร แทนที่จะเป็นค่าที่เก็บข้อมูล

5 ตัวดำเนินการ ( ต่อ ) ตัวอย่าง เช่น char *ptr = NULL; เป็น declaration : ทำการจองเนื้อที่ให้ตัวแปร พอยท์เตอร์ชื่อ ptr และชี้ไปยัง NULL *ptr = NULL; เป็น executable code : การให้ค่า NULL แก่ หน่วยความจำตำแหน่งที่ ptr ชี้ไป

6 ตัวอย่าง 11.1 โปรแกรมที่ใช้ พอยท์เตอร์ main() { int num = 3; int *ptr; ptr =# printf(“The value of num is %d. Its address is %lu.”,*ptr,(long)ptr); }

7 ผลลัพธ์ของตัวอย่าง 11.1  ผลลัพธ์ >The value of num is 3. Its address is  หมายเหตุ ค่าตำแหน่งของตัวแปรไม่แน่นอน ในแต่ละครั้งของการสั่งดำเนินการ

8 คำอธิบายโปรแกรม Declaration: int num = 3; int *ptr; num int var ptr Executable code: ptr = # num ptr 3 3

9 ตัวอย่าง 11.2 โปรแกรมที่ใช้ พอยท์เตอร์ main() { static int number[6] = {1,2,3,4,5,6}; int i,*ptr; for(i=0;i<6;i++) { ptr = &number[i]; printf(“%d\n”,*ptr); }

10 ผลลัพธ์โปรแกรมตัวอย่าง 11.2 ผลลัพธ์ หมายเหตุ ถ้าเรา ประกาศ int *ptr; เรา สามารถให้ ptr ชี้ไปยัง อาร์เรย์ได้ดังนี้ ptr = number; หรือ ptr = &number[0];

11 อธิบายโปรแกรม number ptr i = 0; i = 1; i = 2; i = 3; i = 4; i = 5; ptr

12 ตัวอย่าง 11.3 ฟังก์ชันที่ทำการ คำนวณบนตัวชี้ int strlen(s) char *s; { char *p = s; while(*p != ‘\0’) p++; return (p-s); }

13 คำอธิบายฟังก์ชันตัวอย่าง 11.3  เป็นฟังก์ชันที่ใช้คำนวณหาความยาวของ string  โดย string ที่ต้องการหาความยาวได้มาจากการ ผ่านค่าตำแหน่งของ string มาทางรายการ อาร์กิวเมนต์ของฟังก์ชัน A B C D E F \0 S P สิ้นสุดความยาว = P-S

14 อาร์เรย์ของพอยท์เตอร์ ในภาษาซี สามารถที่จะมีอาร์เรย์ที่เป็นพอยท์ เตอร์เช่นเดียวกับมีอาร์เรย์ที่เป็นข้อมูลชนิด อื่นๆได้ เช่น int *parray[10]; parray[0] parray[1] parray[2]. parray[9] int.var

15 ตัวอย่าง 11.4 โปรแกรมอาร์เรย์ ของพอยท์เตอร์ main() { int j,n1=1;n2=2;n3=3;*ptr,*parray[4]; parray[1] = &n1; parray[2] = &n2; ptr = &n3; parray[3] = ptr; for(j=1;j<4;j++) printf(“%d\n”,*parray[j]); }

16 ผลลัพธ์ของโปรแกรมตัวอย่าง 11.4  เป็นโปรแกรมที่ใช้อาร์เรย์เก็บค่าตำแหน่ง ของ int var  จะได้ผลลัพธ์ดังนี้ 1 2 3

17 คำอธิบายโปรแกรม declaration int n1=1,n2=2,n3=3,*ptr, *parray[4] executable code parray [0] [1] [2] [3] ptr n1 n2 n parray [0] [1] [2] [3] ptr

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

19 ตัวอย่าง 11.5 อาร์เรย์ของพอยท์ เตอร์บนตัวอักษร char *month(); main() {int num; puts(“Enter number of month”); scanf(“%d”,num); printf(“The name of month is %s”,month(num)); } Char *month(n) Int n; {static char *name []= { “illegal month”,“January”, “February”,“March”,“April ”,“May”,“June”,“July”, “August”,“September”, “October”,“November”, “December”}; return((n 12)?name[0]: name[n];) }

20 ผลลัพธ์ของโปรแกรมตัวอย่าง 11.5 ผลลัพธ์ Enter number of month > 6 The name of month is June

21 คำอธิบายโปรแกรม name[0] name[1] name[2] name[12] illegal month January February. December


ดาวน์โหลด ppt บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูล ชนิดพอยท์เตอร์

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


Ads by Google