Recommended
PDF
Pointสอนเรียนรู้วิทยาศาสตร์อย่างไร สอนออนไลน์
PDF
PPTX
วิทยาศาสตร์โลกทั้งระบบ : Earth system science (basic)
PPTX
PDF
PDF
บทที่ 2 ทักษะการรู้สารสนเทศ
PDF
PDF
PPTX
ทฤษฎีพัฒนาการทางสติปัญญาของเพียเจต์
PDF
มาตรการรักษาความปลอดภัยและแผนป้องกันและระงับอัคคีภัยในสถานศึกษา
PDF
เนื้อหาชีววิทยา (ม.4-6 สายวิทย์และสายศิลป์)
PDF
PDF
บันทึกข้อความเวียนข้อสอบ Pre o net ปี2555
PDF
บทเรียนสำเร็จรูป เล่มที่ 1 สสารและสาร
PDF
บทที่ 4-2-คุณธรรมและจริยธรรม
PDF
บันทึกข้อความประเมินทัศนศึกษา2565_ครูวิชัย
PDF
Isการสำรวจปัญหาการศึกษาไทยในปัจจุบัน
PDF
โครงงานเว็บไซต์โทษของบุหรี่
PPTX
สิ่งมีชีวิตกับสิ่งแวดล้อม ประถม
PDF
เอกสารประกอบการเรียนวิชาพ31101สุขศึกษาและพลศึกษา1ม
PDF
ตัวอย่างโครงงานคอมพิวเตอร์
PDF
เชื้อเพลิงซากดึกดำบรรพ์ (Fossil fuels
DOC
แผนการจัดกิจกรรมการเรียนรู้ที่ 11 เรื่องกระบวนการสังเคราะห์ด้วยแสง
PDF
หน่วยย่อยที่ 2 แรงกิริยาและแรงปฏิกิริยา
PDF
ทักษะกระบวนการทางวิทยาศาสตร์
PDF
PDF
PDF
ใบความรู้เรื่องเซลล์ของสิ่งมีชีวิต1
PPTX
PPT
โครงสร้างข้อมูลแบบ กราฟ (Graph)
More Related Content
PDF
Pointสอนเรียนรู้วิทยาศาสตร์อย่างไร สอนออนไลน์
PDF
PPTX
วิทยาศาสตร์โลกทั้งระบบ : Earth system science (basic)
PPTX
PDF
PDF
บทที่ 2 ทักษะการรู้สารสนเทศ
PDF
PDF
What's hot
PPTX
ทฤษฎีพัฒนาการทางสติปัญญาของเพียเจต์
PDF
มาตรการรักษาความปลอดภัยและแผนป้องกันและระงับอัคคีภัยในสถานศึกษา
PDF
เนื้อหาชีววิทยา (ม.4-6 สายวิทย์และสายศิลป์)
PDF
PDF
บันทึกข้อความเวียนข้อสอบ Pre o net ปี2555
PDF
บทเรียนสำเร็จรูป เล่มที่ 1 สสารและสาร
PDF
บทที่ 4-2-คุณธรรมและจริยธรรม
PDF
บันทึกข้อความประเมินทัศนศึกษา2565_ครูวิชัย
PDF
Isการสำรวจปัญหาการศึกษาไทยในปัจจุบัน
PDF
โครงงานเว็บไซต์โทษของบุหรี่
PPTX
สิ่งมีชีวิตกับสิ่งแวดล้อม ประถม
PDF
เอกสารประกอบการเรียนวิชาพ31101สุขศึกษาและพลศึกษา1ม
PDF
ตัวอย่างโครงงานคอมพิวเตอร์
PDF
เชื้อเพลิงซากดึกดำบรรพ์ (Fossil fuels
DOC
แผนการจัดกิจกรรมการเรียนรู้ที่ 11 เรื่องกระบวนการสังเคราะห์ด้วยแสง
PDF
หน่วยย่อยที่ 2 แรงกิริยาและแรงปฏิกิริยา
PDF
ทักษะกระบวนการทางวิทยาศาสตร์
PDF
PDF
PDF
ใบความรู้เรื่องเซลล์ของสิ่งมีชีวิต1
Viewers also liked
PPTX
PPT
โครงสร้างข้อมูลแบบ กราฟ (Graph)
PPT
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (linklist)
PDF
ใบความรู้ที่ 1 การใช้งานโปรแกรม visual studio 2010 เบื้องต้น
DOCX
ขั้นตอนการสร้าง Facebook page
PPT
PDF
การควบคุมทิศทางการทำงานของโปรแกรม
PDF
(Big One) C Language - 06 ฟังก์ชันจัดกาลิงค์ลิสต์แบบสองทาง
PDF
(Big One) C Language - 04 เปลี่ยนตำแหน่งการชี้ของpointer
PDF
(Big One) C Language - 07 object linkedlist
PDF
(Big One) C Language - 05 ฟังก์ชันจัดกาลิงค์ลิสต์แบบทางเดียว
PPTX
Gdbcc presentation revised & edited 12
Similar to ตัวแปรชนิดพอยเตอร์ (Pointer)
PDF
PDF
PPTX
05 ตัวแปรและชนิดของตัวแปร
PPTX
Chapter6 ตัวแปร โอเปอเรเตอร์
PDF
PDF
PDF
PPT
PPT
PDF
PPT
ตัวแปรชุดและตัวแปรอักขระ PPT
PPT
PDF
PDF
PDF
PDF
PDF
PDF
PPT
PPT
More from tumetr
PDF
หน่วยที่ 5.3.2 การสุขาภิบาลอาหาร
PPT
PPT
การวิเคราะห์อัลกอริทึม(algorithm analysis)
PDF
หน่วยที่ 5.3.1 สารปนเปื้อนในอาหาร
PDF
หน่วยที่ 5.2 ผลิตภัณฑ์อาหารเพื่อสุขภาพ
PPTX
กลยุทธ์การเลือกทำเลที่ตั้งสถานประกอบการ
PPT
การจัดเรียงข้อมูล (sorting)
PPT
ส่วนจัดการสื่อประสานผู้ใช้(User interface-management)
PPTX
ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
PPT
กลยุทธ์การวางผังสถานประกอบการ
PPT
PPTX
ทรัพยากรมนุษย์และการออกแบบงาน
PPT
PPT
การพัฒนาและติดตั้งระบบ(System implementation)
PPT
The system-analysis-and-design
PPT
An approach-to-planning-software-projects
PPT
PPT
PPTX
PPTX
ตัวแปรชนิดพอยเตอร์ (Pointer) 1. 2. พอยเตอร์ (Pointer)
พอยเตอร์ (Pointer) เป็นตัวแปรชนิดพิเศษ
ในภาษา C ทำาหน้าที่เก็บตำาแหน่งที่
อยู่(Address) ของตัวแปรชนิดอื่นๆ ที่อยู่ใน
หน่วยความจำา แทนที่จะเก็บข้อมูลเหมือนกันตัว
แปรพื้นฐานชนิดอื่นๆ
ตัวแปรพอยเตอร์มีลักษณะคล้ายตัวแปรตารา
งอาเรย์ แต่ที่แตกต่างกันคือ ตัวแปรตารา
งอาเรย์จะเก็บเฉพาะค่าต่างๆ ที่เป็นชนิดกันเดียว
กับตัวแปรอาเรย์ แต่ตัวแปรพอยเตอร์จะเก็บ
เฉพาะค่าตำาแหน่ง Address ตัวแปรเท่านั้น
6. 7. 8. int *ptrint; // define a pointer to int
float *ptrx; // define a pointer to float
*ptrint และ *ptrx เป็นตัวแปรพอยน์เตอร์ที่เก็บ
ตำาแหน่งเลขที่หน่วยความจำาของตัวแปรที่มีชนิด
ข้อมูลเป็น Int และ float ตามลำาดับ เครื่องหมาย *
มีความหมายว่าเป็น pointer to type
9. 10. ตัวดำาเนินการที่ใช้กับตัวแป
รพอยเตอร์
1. แสดงตำาแหน่งข้อมูลด้วย & (address
operation)
เครื่องหมาย & (Ampersand) ใช้ในการ
กำาหนดตำาแหน่งที่อยู่ของตัวแปรให้กับพอย
เตอร์ โดยเมื่อสร้างตัวแปรชนิดพอยเตอร์มาแล้ว
วิธีการที่จะนำาค่าตำาแหน่งในหน่วยความจำาของ
ตัวแปรใดๆ มาเก็บไว้ในตัวแปรพอยเตอร์ได้นั้น
ต้องใช้เครื่องหมาย & โดยให้เขียนเครื่องหมาย
& นำาหน้าชื่อตัวแปรในหน่วยความจำา
วิธีการประกาศตัวแปร
11. 12. 13. พอยเตอร์ (Pointer)
Pointer เป็นตัวแปรประเภทหนึ่งในภำษำ C ที่ต่ำง
จำกตัวแปรทั่ว ๆ ไปคือ ตัวแปรทั่ว ๆ ไปจะประกำศ
แบบนี้คือ
int a,b,c;
a=b=10;
c=a;
โดย c จะเก็บค่ำ 10
14. พอยเตอร์ (Pointer)
แต่ถ้ำประกำศดังนี้
int a,b;
int *c;
a=b=10;
c=&a;
จะเห็นได้ว่ำ ตัวแปร c เป็น pointer และให้ c=&a
ฉะนั้น c จะไม่ได้เก็บค่ำ 10 แต่ c จะเก็บตำำแหน่ง
ของตัวแปร a ที่อยู่ในหน่วยควำมจำำ และทำำให้ c
สำมำรถเข้ำถึงข้อมูลในตัวแปร a ได้
15. 16. 17. 18. 19. 20. 21. ตัวดำำเนินกำรที่ใช้กับตัวแป
รพอยเตอร์
2. แสดงค่ำข้อมูลด้วย * (indirect
operation)
เครื่องหมำย * อ้ำงถึงข้อมูลหรือค่ำที่เก็บ
ไว้ในหน่วยควำมจำำตำำแหน่งที่ชี้ โดย
สำมำรถหำค่ำข้อมูลจำกตำำแหน่งในหน่วยควำม
จำำที่เก็บไว้ในตัวแปรพอยเตอร์ โดยกำรเขียน
เครื่องหมำย * นำำหน้ำชื่อตัวแปรพอยเตอร์
วิธีกำรประกำศตัวแปร
variable=*pointer;
22. ตัวดำำเนินกำรที่ใช้กับตัวแป
รพอยเตอร์
PV = &V;
เครื่องหมำย “&” หมำยถึง ที่อยู่ของ V
(Address Operator)
U = *PV;
ดังนั้นหำกเรำต้องกำรอ้ำงอิงค่ำของ V เรำ
ต้องใช้เครื่องหมำย “*” (Indirect Operator)
ให้กับ Pointer แล้วนำำค่ำที่ได้ไปเก็บไว้ใน U
ที่อยู่ของที่อยู่ของ VVที่อยู่ของที่อยู่ของ VV ค่ำของค่ำของ VVค่ำของค่ำของ VV
PVPV VV
23. แสดงค่ำข้อมูลด้วย *
(indirect operation)
ตัวอย่ำงกำรใช้เครื่องหมำย *
int num1=113,num2;
int *pt_num;
pt_num=&num1;
num2=*pt_num;
float price1=4.85,price2;
float *pt_price;
pt_price=&price1;
price2=*pt_price;
113 0100
num1 pt_num
0100 0230
113
num2
0310
price1 pt_price
0150 0430
price2
0510
24. 25. 26. 27. ตัวอย่ำงโปรแกรมโดยใช้
เครื่องหมำย * กับตัวแปรพอยเตอร์
#include<stdio.h>
void main()
{ int num1=113,num2;
float price=4.85;
char hint1='a',hint2;
int *pt_num;
float *pt_price;
char *pt_hint1;
pt_num=&num1;
pt_price=&price;
pt_hint1=&hint1;
num2=*pt_num;
hint2=*pt_hint1;
printf("Variable of num2 = %d n",*pt_num);
printf("Variabie of Price = %p n",&pt_price);
printf("Variabie of hint2 = %c n",hint2);
}
28. 29. 30. ตัวอย่ำงโปรแกรมตัวแปรพอยเตอร์
กับอำร์เรย์
#include<stdio.h>
int x[5]={11,43,523,789,101};
int *pt_1,*pt_2,*pt_3,*pt_4,*pt_5;
void main()
{ pt_1=&x[0];
pt_2=&x[1];
pt_3=&x[2];
pt_4=&x[3];
pt_5=&x[4];
printf(“Address of x[0] = %p n”,pt_1);
printf(“Address of x[1] = %p n”,pt_2);
printf(“Value of x[2] = %d n”,*pt_3);
printf(“Value of x[3] = %d n”,*pt_4);
printf(“Value of x[4] = %d n”,*pt_5);
x[3]=*pt_5; // กำำหนดค่ำของตัวแปรอำร์เรย์ x[3] ใหม่ด้วยข้อมูลที่เก็บไว้
ในตัวแปรพอยเตอร์ pt_5
printf(“Value of x[3] = %d n”,x[3]);
31. 32. 33. 34. การใช้งาน Pointer กับอาร์เรย์
1 มิติ
ตัวอย่าง
int x[3] = {10, 11, 12};
// Address ของอาร์เรย์ตัวที่ 0 ไม่ได้มีค่า
เท่ากับ 10 แต่อาจมีค่าเป็น FFF5 ขึ้นอยู่กับการ
จองหน่วยความจำา ณ ขณะนั้น
&x[0] และก็มีค่าเท่ากับ x + 0 // FFF5
&x[1] และก็มีค่าเท่ากับ x + 1 // FFF7
&x[2] และก็มีค่าเท่ากับ x + 2 // FFF9
x[0] และก็มีค่าเท่ากับ *(x + 0) // 10
x[1] และก็มีค่าเท่ากับ *(x + 1) // 11
x[2] และก็มีค่าเท่ากับ *(x + 2) // 12
36. 37. ประโยชน์ของ Pointer
มีประโยชน์เมื่อต้องเขียนโปรแกรมจัดการกับ
โครงสร้างข้อมูลขนาดใหญ่ ที่มีข้อมูลจำานวนมาก การ
จัดเรียงหรือการประมวลผลต่อข้อมูลโดยใช้ pointer
และ array แม้จะทำาได้รวดเร็ว แต่ในกรณีที่มีข้อมูล
จำานวนมหาศาล การจัดเรียงหรือประมวลผลหาก
กระทำาต่อตัวข้อมูลใน array โดยตรงจะยังช้าเกินไป
หลีกเลี่ยงการใช้ array เก็บตัวข้อมูล เมื่อต้องการจัด
เรียงหรือประมวลผลกับข้อมูล เราจะทำาทางอ้อมโดยจัด
เรียงหรือประมวลผลกับค่าของ pointer ที่ถูกชี้ซึ่ง
ทำาได้รวดเร็วกว่าการกระทำากับข้อมูลโดยตรงมาก
ทำาให้การจัดการกับข้อมูลในโครงสร้างข้อมูลที่มีข้อมูล
จำานวนมาก สามารถทำาได้ด้วยความเร็วสูง
38. ประโยชน์ของของ Pointer
ข้อสรุปเรื่อง Pointer
ทำาหน้าที่ชี้ไปยังตำาแหน่งเก็บข้อมูลในหน่วย
ความจำา
การประกาศ pointer ต้องกำาหนด data type
ด้วย
ใช้ pointer ชี้ไปยัง pointer หรือชี้ไปยัง
array หรือ array ของ pointer ได้
การอ้างถึงตำาแหน่งของตัวแปร ใช้เครื่องหมาย
& หน้าตัวแปร pointer เช่น &pt