SlideShare a Scribd company logo
1 of 13
Download to read offline
ตัวแปรพอยน์เตอร์ (Pointer) เป็นตัวแปรพิเศษในภาษา C มีหน้าที่
เก็บตาแหน่งที่อยู่ (Address) ของตัวแปรอื่น ๆ ที่อยู่ในหน่วยความจา ซึ่ง
ต่างจากตัวแปรทั่วไปที่ทาหน้าที่เก็บข้อมูล โดยมีรูปแบบการประกาศใช้
งานดังนี้
type *name;
โดยที่ type เป็นชนิดของตัวแปรพอยน์เตอร์ โดยพิจารณาว่าจะประกาศ
ตัวแปรพอยน์เตอร์เพื่อใช้เก็บที่อยู่ของตัวแปรชนิดใด
* เป็นเครื่องหมายที่กาหนดให้ตัวแปรที่ประกาศเป็นพอยน์เตอร์
ตัวอย่างการประกาศตัวแปรพอยน์เตอร์
int *pt_intCount;
char *pt_chName;
float *pt_fPrice;

1
2
3

1. ประกาศตัวแปรพอยน์เตอร์สาหรับเก็บตาแหน่งที่อยู่ของตัว
แปรชนิด int เท่านั้น
2. ประกาศตัวแปรพอยน์เตอร์สาหรับเก็บตาแหน่งที่อยู่ของตัว
แปรชนิด char เท่านั้น
3. ประกาศตัวแปรพอยน์เตอร์สาหรับเก็บตาแหน่งที่อยู่ของตัว
แปรชนิด float เท่านั้น
การใช้งานตัวแปรพอยน์เตอร์
ตัวแปรพอยน์เตอร์จะมีรูปแบบการใช้งานที่แตกต่างไปจากตั ว
แปรทั่วไป เนื่องจากพอยน์เตอร์มีหน้าที่เก็บตาแหน่งที่อยู่ของตัวแปร ซึ่ง
สามารถใช้งานได้ทั้งตาแหน่งที่อยู่ที่พอยน์เตอร์เก็บไว้ และสามารถใช้
งานข้อมูลที่ตาแหน่งที่อยู่นั้นบันทึกได้ด้วย โดยสามารถใช้งานได้ดังนี้
• การใช้งานเครื่องหมาย & เพื่ออ้างอิงถึงตาแหน่งที่อยู่ของตัวแปร
• การใช้เครื่องหมาย * เพื่ออ้างอิงถึงข้อมูลที่ตาแหน่งที่อยู่ของตัวแปร
บันทึกไว้
การดาเนินการกับพอยน์เตอร์
การดาเนินการกับพอยน์เตอร์ เป็นการใช้งานตัวดาเนินการ
ทางคณิตศาสตร์กับพอยน์เตอร์ โดยใช้ตัวดาเนินการ +, -, ++ และ -ซึ่ ง ผลที่ ไ ด้ จ ะเป็ น การเลื่ อ นต าแหน่ ง ที่ อ ยู่ ข องตั ว แปรตาม
ความหมายของตัวดาเนินการ
คื อ ก าหนดให้ พ อยน์ เ ตอร์ ชี้ ไ ปยั ง ต าแหน่ ง ที่ อ ยู่ที่ สู ง ขึ้ น หรื อ
กาหนดให้พอยน์เตอร์ชี้ไปยังตาแหน่งที่อยู่ที่ต่าลงนั่นเอง
การใช้งานพอยน์เตอร์กับอาร์เรย์

ความสามารถอีกอย่างหนึ่งของพอยน์เตอร์ก็คือ การใช้
พอยน์เตอร์อ้างถึงตาแหน่งที่อยู่ของตัวแปรอาร์เรย์ ซึ่ง
รวมไปถึ ง สตริ ง ซึ่ ง เป็ น ตั ว แปรอาร์ เ รย์ ข องอั ก ขระด้ ว ย
พอยน์เตอร์ที่ใช้อ้างอิงตาแหน่งที่อยู่ของตัวแปรอาร์เรย์
โดยปกติ จ ะเป็ น การอ้ า งถึ ง ต าแหน่ ง ที่ อ ยู่ ข องตั ว แปร
อาร์เรย์ตาแหน่งแรกเท่านั้น (อินเด็กซ์เป็น 0) เนื่องจาก
ตาแหน่งอื่น ๆ จะต่อจากตาแหน่งแรกของตัวแปรอาร์เรย์
นั่นเอง
การจัดการพื้นที่หน่วยความจาแบบไดนามิค
(Dynamic Memory Allocation)
การจั ด การพื้ น ที่ ห น่ ว ยความจ าแบบไดนามิ ค
(Dynamic Memory Allocation) คือ การจัดการพื้นที่
หน่วยความจาโดยผู้เขียนโปรแกรมนั่นเอง เพราะใน
บางครั้งการที่คอมพิวเตอร์จัดการหน่วยความจานั้น
อาจเกิดปัญ หาในกรณีการจองพื้นที่หน่ วยความจา
แบบคงที่ แล้ ว คอมพิ ว เตอร์ ไ ม่ ส ามารถจั ด สรร
หน่วยความจาให้ได้ ทาให้การทางานของโปรแกรม
อาจเกิดความผิดพลาดขึ้นได้
การจัดการพื้นที่หน่วยความจาแบบไดนามิค
(Dynamic Memory Allocation)
การจั ด การหน่ ว ยความจ าแบบไดนามิ ค นี้ สามารถท าได้ โ ดย
เรียกใช้งานฟังก์ชันต่าง ๆ ซึ่งอยู่ภายใต้ไลบารี stdlib.h ดังนี้
1. ฟังก์ชันสาหรับการจองพื้นที่หน่วยความจา

2. ฟังก์ชันสาหรบคืนค่าหน่วยความจา

3. ฟังก์ชันสาหรับเปลี่ยนแปลงพื้นที่หน่วยความจา
1. ฟังก์ชันสาหรับการจองพื้นที่หน่วยความจา

ได้แก่ ฟังก์ชัน malloc และฟังก์ชัน calloc ซึ่งมีรูปแบบการใช้งานดังนี้
void *malloc(size_t num_bytes);
โดยที่ size_t num_bytes เป็นขนาดของหน่วยความจาที่ต้องการจองมี
หน่วยเป็นไบต์ (Byte)
กรณีที่จองหน่วยความจาได้สาเร็จ ฟังก์ชัน malloc จะคืนค่ากลับมาใน
ลักษณะเป็นตัวเลขไม่สามารถเดาได้ และกรณีที่จองหน่วยความจาไม่สาเร็จ
ฟังก์ชัน malloc จะคืนค่า NULL กลับมา
void *calloc(size_t num_elements, size_t element_size);

โดยที่ size_t num_elements เป็นจานวนที่ต้องการจองในหน่วยความจา
size_t element_size เป็นขนาดของหน่วยความจาที่ต้องการจอง
แต่ละตัวมีหน่วยเป็นไบต์
กรณีที่จองหน่วยความจาได้สาเร็จ ฟังก์ชัน calloc จะคืนค่ากลับมาใน
ลักษณะเป็น 0 และกรณีที่จองหน่วยความจาไม่สาเร็จ ฟังก์ชัน calloc จะ
คืนค่า NULL กลับมา
2. ฟังก์ชันสาหรับคืนค่าหน่วยความจา

ได้แก่ ฟังก์ชัน free ซึ่งมีรูปแบบการใช้งานดังนี้
void free(void *prt);
โดยที่ void *prt เป็นตัวแปรพอยน์เตอร์ที่ชี้ไปยังค่าตาแหน่งที่อยู่ใน
หน่วยความจา ซึ่งเป็นผลมาจากฟังก์ชัน calloc และ malloc
3. ฟังก์ชันสาหรับเปลี่ยนแปลงพื้นที่หน่วยความจา

ได้แก่ ฟังก์ชัน realloc ซึ่งมีรูปแบบการใช้งานดังนี้
void *realloc(void *stge_ptr, size_t element_size);
โดยที่
void *stge_ptr

เป็นตัวแปรพอยน์เตอร์ที่ชี้ไปยังค่าตาแหน่งที่อยู่ใน
หน่วยความจาซึ่งเป็นผลมาจากฟังก์ชัน calloc และ
malloc
size_t element_size เป็นขนาดของหน่วยความจาที่ต้องการจองแต่ละตัว
มีหน่วยเป็นไบต์
ที่มา : คู่มืออบรมครูวิทยาศาสตร์ คณิตศาสตร์ คอมพิวเตอร์ โลก ดาราศาสตร์ และอวกาศ ระดับมัธยมศึกษาตอนปลาย
หนังสือเรียนรายวิชาเพิ่มเติม การเขียนโปรแกรมเบื้องต้นด้วยภาษา C บริษทซัคเซสมีเดีย
คู่มือเรียนเขียนโปรแกรมภาษา สานักพิมพ์ IDC PREMIER

More Related Content

Viewers also liked (16)

3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์
3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์
3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์
 
บทที่ 2 ข้อมูล สารสนเทศ และความรู้
บทที่ 2  ข้อมูล สารสนเทศ และความรู้บทที่ 2  ข้อมูล สารสนเทศ และความรู้
บทที่ 2 ข้อมูล สารสนเทศ และความรู้
 
Transmisión de calor
Transmisión de calorTransmisión de calor
Transmisión de calor
 
Deberes y derechos como aprendiz sena
Deberes y derechos como aprendiz senaDeberes y derechos como aprendiz sena
Deberes y derechos como aprendiz sena
 
Juan Carlos Briquet De paso por la vida
Juan Carlos Briquet De paso por la vidaJuan Carlos Briquet De paso por la vida
Juan Carlos Briquet De paso por la vida
 
Estiak & Muwas
Estiak & MuwasEstiak & Muwas
Estiak & Muwas
 
Target audience
Target audienceTarget audience
Target audience
 
Air Quality Hot Spot Mapper | Paul Monks| March 2015
Air Quality Hot Spot Mapper | Paul Monks| March 2015Air Quality Hot Spot Mapper | Paul Monks| March 2015
Air Quality Hot Spot Mapper | Paul Monks| March 2015
 
Chennai
ChennaiChennai
Chennai
 
Reflexión II
Reflexión IIReflexión II
Reflexión II
 
Kommas p8-profesi
Kommas p8-profesiKommas p8-profesi
Kommas p8-profesi
 
Syllabus informatica-ii-octubre2015 (1)
Syllabus informatica-ii-octubre2015 (1)Syllabus informatica-ii-octubre2015 (1)
Syllabus informatica-ii-octubre2015 (1)
 
Folleto
FolletoFolleto
Folleto
 
Sixth evidence / How to get the visa to USA
Sixth evidence / How  to get the visa to USA Sixth evidence / How  to get the visa to USA
Sixth evidence / How to get the visa to USA
 
5S basic training ppt
5S basic training ppt5S basic training ppt
5S basic training ppt
 
jiujitsu 2
jiujitsu 2jiujitsu 2
jiujitsu 2
 

Similar to งานทำ Blog บทที่ 9 (2)

Similar to งานทำ Blog บทที่ 9 (2) (12)

ตัวแปรและคำสงวน
ตัวแปรและคำสงวนตัวแปรและคำสงวน
ตัวแปรและคำสงวน
 
3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน
 
3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน
 
3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน
 
บทที่ 2
บทที่ 2บทที่ 2
บทที่ 2
 
Variabledoc
VariabledocVariabledoc
Variabledoc
 
โครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซีโครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซี
 
Learn 2
Learn 2Learn 2
Learn 2
 
งานจารทรงศักดิ์
งานจารทรงศักดิ์งานจารทรงศักดิ์
งานจารทรงศักดิ์
 
ส่วนประกอบของโปรแกรม Visual basic 6
ส่วนประกอบของโปรแกรม Visual basic 6ส่วนประกอบของโปรแกรม Visual basic 6
ส่วนประกอบของโปรแกรม Visual basic 6
 
โปรแกรมย่อยและฟังก์ชันมาตรฐาน
โปรแกรมย่อยและฟังก์ชันมาตรฐานโปรแกรมย่อยและฟังก์ชันมาตรฐาน
โปรแกรมย่อยและฟังก์ชันมาตรฐาน
 
ภาษา C
ภาษา Cภาษา C
ภาษา C
 

More from รัสนา สิงหปรีชา

บทที่ 6-การใช้งานเทคโนโลยีสารสนเทศอย่างมีความรับผิดชอบ
บทที่ 6-การใช้งานเทคโนโลยีสารสนเทศอย่างมีความรับผิดชอบบทที่ 6-การใช้งานเทคโนโลยีสารสนเทศอย่างมีความรับผิดชอบ
บทที่ 6-การใช้งานเทคโนโลยีสารสนเทศอย่างมีความรับผิดชอบรัสนา สิงหปรีชา
 
บทที่ 1 เทคโนโลยีสมัยใหม่เอาลงบล๊อก
บทที่ 1 เทคโนโลยีสมัยใหม่เอาลงบล๊อกบทที่ 1 เทคโนโลยีสมัยใหม่เอาลงบล๊อก
บทที่ 1 เทคโนโลยีสมัยใหม่เอาลงบล๊อกรัสนา สิงหปรีชา
 
3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์
3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์
3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์รัสนา สิงหปรีชา
 

More from รัสนา สิงหปรีชา (20)

บทที่ 6-การใช้งานเทคโนโลยีสารสนเทศอย่างมีความรับผิดชอบ
บทที่ 6-การใช้งานเทคโนโลยีสารสนเทศอย่างมีความรับผิดชอบบทที่ 6-การใช้งานเทคโนโลยีสารสนเทศอย่างมีความรับผิดชอบ
บทที่ 6-การใช้งานเทคโนโลยีสารสนเทศอย่างมีความรับผิดชอบ
 
บทที่ 1 เทคโนโลยีสมัยใหม่เอาลงบล๊อก
บทที่ 1 เทคโนโลยีสมัยใหม่เอาลงบล๊อกบทที่ 1 เทคโนโลยีสมัยใหม่เอาลงบล๊อก
บทที่ 1 เทคโนโลยีสมัยใหม่เอาลงบล๊อก
 
3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์
3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์
3.1 การทำงานขั้นพื้นฐานของคอมพิวเตอร์
 
3.1 องค์ประกอบของคอมพิวเตอร์
3.1 องค์ประกอบของคอมพิวเตอร์3.1 องค์ประกอบของคอมพิวเตอร์
3.1 องค์ประกอบของคอมพิวเตอร์
 
3.8 การทำงานแบบลำดับ
3.8 การทำงานแบบลำดับ3.8 การทำงานแบบลำดับ
3.8 การทำงานแบบลำดับ
 
3.8 การทำงานตามลำดับ
3.8 การทำงานตามลำดับ3.8 การทำงานตามลำดับ
3.8 การทำงานตามลำดับ
 
3.3. ชนิดของข้อมูล
3.3. ชนิดของข้อมูล3.3. ชนิดของข้อมูล
3.3. ชนิดของข้อมูล
 
3.3. ชนิดของข้อมูล
3.3. ชนิดของข้อมูล3.3. ชนิดของข้อมูล
3.3. ชนิดของข้อมูล
 
คู่มือนักเรียน 3.1
คู่มือนักเรียน 3.1คู่มือนักเรียน 3.1
คู่มือนักเรียน 3.1
 
คู่มือครู
คู่มือครูคู่มือครู
คู่มือครู
 
3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี
 
3.8 การทำงานตามลำดับ
3.8 การทำงานตามลำดับ3.8 การทำงานตามลำดับ
3.8 การทำงานตามลำดับ
 
3.7 การเขียนผังงาน
3.7 การเขียนผังงาน3.7 การเขียนผังงาน
3.7 การเขียนผังงาน
 
3.6 ฟังก์ชัน
3.6 ฟังก์ชัน3.6 ฟังก์ชัน
3.6 ฟังก์ชัน
 
3.4 ตัวดำเนินการและนิพจน์
3.4 ตัวดำเนินการและนิพจน์3.4 ตัวดำเนินการและนิพจน์
3.4 ตัวดำเนินการและนิพจน์
 
3.3 ชนิดของข้อมูล
3.3 ชนิดของข้อมูล3.3 ชนิดของข้อมูล
3.3 ชนิดของข้อมูล
 
3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี
 
3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี
 
3.3 ชนิดของข้อมูล
3.3 ชนิดของข้อมูล3.3 ชนิดของข้อมูล
3.3 ชนิดของข้อมูล
 
3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี
 

งานทำ Blog บทที่ 9 (2)