SlideShare a Scribd company logo
ตัวแปรพอยน์เตอร์ (Pointer) เป็นตัวแปรพิเศษในภาษา C มีหน้าที่
เก็บตาแหน่งที่อยู่ (Address) ของตัวแปรอื่น ๆ ที่อยู่ในหน่วยความจา ซึ่ง
ต่างจากตัวแปรทั่วไปที่ทาหน้าที่เก็บข้อมูล โดยมีรูปแบบการประกาศใช้
งานดังนี้

 type *name;

โดยที่ type เป็นชนิดของตัวแปรพอยน์เตอร์ โดยพิจารณาว่าจะประกาศ
            ตัวแปรพอยน์เตอร์เพื่อใช้เก็บที่อยู่ของตัวแปรชนิดใด
        * เป็นเครื่องหมายที่กาหนดให้ตัวแปรที่ประกาศเป็นพอยน์เตอร์
ตัวอย่างการประกาศตัวแปรพอยน์เตอร์

int *pt_intCount;            1
char *pt_chName;             2
float *pt_fPrice;            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

What's hot

การประกาศตัวแปรในภาษาซี
การประกาศตัวแปรในภาษาซีการประกาศตัวแปรในภาษาซี
การประกาศตัวแปรในภาษาซีmycomc55
 
การเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา Cการเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา C
Warawut
 
โปรแกรมย่อยและฟังก์ชัน
โปรแกรมย่อยและฟังก์ชันโปรแกรมย่อยและฟังก์ชัน
โปรแกรมย่อยและฟังก์ชัน
ประภาพร เนียมหอม
 
3การเก็บค่าตัวแปร
3การเก็บค่าตัวแปร3การเก็บค่าตัวแปร
3การเก็บค่าตัวแปร
teedee111
 
C lang
C langC lang
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
Wittayakorn Yasingthong
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก.
การเขียนคำสั่งควบคุมแบบมีทางเลือก.การเขียนคำสั่งควบคุมแบบมีทางเลือก.
การเขียนคำสั่งควบคุมแบบมีทางเลือก.Mink Kamolwan
 
Lab intro-5-1
Lab intro-5-1Lab intro-5-1
Lab intro-5-1
Thonghai Butchat
 
ภาษาซีเบื้องต้น
ภาษาซีเบื้องต้นภาษาซีเบื้องต้น
ภาษาซีเบื้องต้น
สมใจ สีดาจันทร์
 
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือกกลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
Naphamas
 
คำสั่งควบคุมของโปรแกรม
คำสั่งควบคุมของโปรแกรมคำสั่งควบคุมของโปรแกรม
คำสั่งควบคุมของโปรแกรม
Parn Nichakorn
 

What's hot (19)

การประกาศตัวแปรในภาษาซี
การประกาศตัวแปรในภาษาซีการประกาศตัวแปรในภาษาซี
การประกาศตัวแปรในภาษาซี
 
การเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา Cการเขียนฟังก์ชั่นในภาษา C
การเขียนฟังก์ชั่นในภาษา C
 
โปรแกรมย่อยและฟังก์ชัน
โปรแกรมย่อยและฟังก์ชันโปรแกรมย่อยและฟังก์ชัน
โปรแกรมย่อยและฟังก์ชัน
 
ตัวแปรและคำสงวน
ตัวแปรและคำสงวนตัวแปรและคำสงวน
ตัวแปรและคำสงวน
 
3การเก็บค่าตัวแปร
3การเก็บค่าตัวแปร3การเก็บค่าตัวแปร
3การเก็บค่าตัวแปร
 
Lesson3
Lesson3Lesson3
Lesson3
 
C lang
C langC lang
C lang
 
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
 
7 2โครงสร้าง
7 2โครงสร้าง7 2โครงสร้าง
7 2โครงสร้าง
 
Presenter
PresenterPresenter
Presenter
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก.
การเขียนคำสั่งควบคุมแบบมีทางเลือก.การเขียนคำสั่งควบคุมแบบมีทางเลือก.
การเขียนคำสั่งควบคุมแบบมีทางเลือก.
 
Variable
VariableVariable
Variable
 
Lab intro-5-1
Lab intro-5-1Lab intro-5-1
Lab intro-5-1
 
Hydro
HydroHydro
Hydro
 
Lab3bb
Lab3bbLab3bb
Lab3bb
 
ภาษาซีเบื้องต้น
ภาษาซีเบื้องต้นภาษาซีเบื้องต้น
ภาษาซีเบื้องต้น
 
power point.
power point.power point.
power point.
 
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือกกลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
กลุ่ม3การเขียนคำสั่งควบคุมแบบมีทางเลือก
 
คำสั่งควบคุมของโปรแกรม
คำสั่งควบคุมของโปรแกรมคำสั่งควบคุมของโปรแกรม
คำสั่งควบคุมของโปรแกรม
 

Viewers also liked

Aula 1232
Aula 1232Aula 1232
Aula 1232
Miriam Español
 
Tutorial cajoncitos de_búsquedas(1)
Tutorial cajoncitos de_búsquedas(1)Tutorial cajoncitos de_búsquedas(1)
Tutorial cajoncitos de_búsquedas(1)
Miriam Español
 
Infinity Trade Center
Infinity Trade CenterInfinity Trade Center
Infinity Trade Center
Sergio Pripas
 
Crédito Inmobiliario en los medios (Agosto 2010)
Crédito Inmobiliario en los medios (Agosto 2010)Crédito Inmobiliario en los medios (Agosto 2010)
Crédito Inmobiliario en los medios (Agosto 2010)
Credito_Inmobiliario
 
Excel modelos admin.....
Excel modelos admin.....Excel modelos admin.....
Excel modelos admin.....
yohanis
 
Design Campo Belo
Design Campo BeloDesign Campo Belo
Design Campo Belo
Sergio Pripas
 
Metodos de estudio
Metodos de estudioMetodos de estudio
Metodos de estudio
carlosnh
 
Español miriam criket
Español miriam criketEspañol miriam criket
Español miriam criket
Miriam Español
 
Alturas rjc
Alturas rjcAlturas rjc
Alturas rjc
jesantosm
 
Facebook - Publicidade e Anúncios na rede social
Facebook - Publicidade e Anúncios na rede socialFacebook - Publicidade e Anúncios na rede social
Facebook - Publicidade e Anúncios na rede social
Lucas Burza
 
Productos 14 15
Productos 14   15Productos 14   15
Productos 14 15
LENYS MAR LÓ
 
Goya y su tiempo
Goya y su tiempoGoya y su tiempo
Goya y su tiempo
Ana Exposito
 
Letras ll ch para el blog
Letras ll ch para el blogLetras ll ch para el blog
Letras ll ch para el blog
Jaidy Maestre
 
P4 incorporacion de la nntt
P4 incorporacion de la nnttP4 incorporacion de la nntt
P4 incorporacion de la nntt
DiegoVillamarinCortez
 
Connection Brooklin
Connection BrooklinConnection Brooklin
Connection Brooklin
Sergio Pripas
 
Google docs (iván e iván)
Google docs (iván e iván)Google docs (iván e iván)
Google docs (iván e iván)
ivancvov76
 

Viewers also liked (20)

งานทำBlog บทที่ 10
งานทำBlog บทที่ 10งานทำBlog บทที่ 10
งานทำBlog บทที่ 10
 
3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี3.1 โครงสร้างของภาษาซี
3.1 โครงสร้างของภาษาซี
 
3.6 ฟังก์ชัน
3.6 ฟังก์ชัน3.6 ฟังก์ชัน
3.6 ฟังก์ชัน
 
3.3 ชนิดของข้อมูล
3.3 ชนิดของข้อมูล3.3 ชนิดของข้อมูล
3.3 ชนิดของข้อมูล
 
Aula 1232
Aula 1232Aula 1232
Aula 1232
 
Tutorial cajoncitos de_búsquedas(1)
Tutorial cajoncitos de_búsquedas(1)Tutorial cajoncitos de_búsquedas(1)
Tutorial cajoncitos de_búsquedas(1)
 
Infinity Trade Center
Infinity Trade CenterInfinity Trade Center
Infinity Trade Center
 
Crédito Inmobiliario en los medios (Agosto 2010)
Crédito Inmobiliario en los medios (Agosto 2010)Crédito Inmobiliario en los medios (Agosto 2010)
Crédito Inmobiliario en los medios (Agosto 2010)
 
Excel modelos admin.....
Excel modelos admin.....Excel modelos admin.....
Excel modelos admin.....
 
Design Campo Belo
Design Campo BeloDesign Campo Belo
Design Campo Belo
 
Metodos de estudio
Metodos de estudioMetodos de estudio
Metodos de estudio
 
Español miriam criket
Español miriam criketEspañol miriam criket
Español miriam criket
 
Alturas rjc
Alturas rjcAlturas rjc
Alturas rjc
 
Facebook - Publicidade e Anúncios na rede social
Facebook - Publicidade e Anúncios na rede socialFacebook - Publicidade e Anúncios na rede social
Facebook - Publicidade e Anúncios na rede social
 
Productos 14 15
Productos 14   15Productos 14   15
Productos 14 15
 
Goya y su tiempo
Goya y su tiempoGoya y su tiempo
Goya y su tiempo
 
Letras ll ch para el blog
Letras ll ch para el blogLetras ll ch para el blog
Letras ll ch para el blog
 
P4 incorporacion de la nntt
P4 incorporacion de la nnttP4 incorporacion de la nntt
P4 incorporacion de la nntt
 
Connection Brooklin
Connection BrooklinConnection Brooklin
Connection Brooklin
 
Google docs (iván e iván)
Google docs (iván e iván)Google docs (iván e iván)
Google docs (iván e iván)
 

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

3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน
รัสนา สิงหปรีชา
 
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1Little Tukta Lita
 
บทที่ 2
บทที่ 2บทที่ 2
บทที่ 2
Wittaya Kaewchat
 
2.Java fundamentals
2.Java fundamentals2.Java fundamentals
2.Java fundamentals
UsableLabs
 
โครงสร้างภาษาซี
โครงสร้างภาษาซีโครงสร้างภาษาซี
โครงสร้างภาษาซี
Patipat04
 
ตัวแปรในภาษาซี
ตัวแปรในภาษาซีตัวแปรในภาษาซี
ตัวแปรในภาษาซีboky_peaw
 
โครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซีโครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซี
ณัฐพล บัวพันธ์
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1Little Tukta Lita
 
หน่วยที่ 7 การสร้างคำสั่งอย่างง่าย
หน่วยที่ 7 การสร้างคำสั่งอย่างง่ายหน่วยที่ 7 การสร้างคำสั่งอย่างง่าย
หน่วยที่ 7 การสร้างคำสั่งอย่างง่ายkruthanyaporn
 
หน่วยที่1 พอร์ทioครบ
หน่วยที่1 พอร์ทioครบหน่วยที่1 พอร์ทioครบ
หน่วยที่1 พอร์ทioครบSaksit Klawkla
 
บทที่ 8 Methods
บทที่ 8 Methodsบทที่ 8 Methods
บทที่ 8 Methods
Kanchana Theugcharoon
 

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

3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน
 
ตัวแปรและคำสงวน
ตัวแปรและคำสงวนตัวแปรและคำสงวน
ตัวแปรและคำสงวน
 
3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน
 
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
 
3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน3.2 ตัวแปรและคำสงวน
3.2 ตัวแปรและคำสงวน
 
บทที่ 2
บทที่ 2บทที่ 2
บทที่ 2
 
2.Java fundamentals
2.Java fundamentals2.Java fundamentals
2.Java fundamentals
 
โครงสร้างภาษาซี
โครงสร้างภาษาซีโครงสร้างภาษาซี
โครงสร้างภาษาซี
 
Lesson5
Lesson5Lesson5
Lesson5
 
ตัวแปรในภาษาซี
ตัวแปรในภาษาซีตัวแปรในภาษาซี
ตัวแปรในภาษาซี
 
งานทำBlog บทที่ 10
งานทำBlog บทที่ 10งานทำBlog บทที่ 10
งานทำBlog บทที่ 10
 
งานทำBlog บทที่ 10
งานทำBlog บทที่ 10งานทำBlog บทที่ 10
งานทำBlog บทที่ 10
 
โครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซีโครงสร้างของโปรแกรมภาษาซี
โครงสร้างของโปรแกรมภาษาซี
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
 
Unit8
Unit8Unit8
Unit8
 
หน่วยที่ 7 การสร้างคำสั่งอย่างง่าย
หน่วยที่ 7 การสร้างคำสั่งอย่างง่ายหน่วยที่ 7 การสร้างคำสั่งอย่างง่าย
หน่วยที่ 7 การสร้างคำสั่งอย่างง่าย
 
หน่วยที่1 พอร์ทioครบ
หน่วยที่1 พอร์ทioครบหน่วยที่1 พอร์ทioครบ
หน่วยที่1 พอร์ทioครบ
 
บทที่ 8 Methods
บทที่ 8 Methodsบทที่ 8 Methods
บทที่ 8 Methods
 

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

บทที่ 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.1 องค์ประกอบของคอมพิวเตอร์
3.1 องค์ประกอบของคอมพิวเตอร์3.1 องค์ประกอบของคอมพิวเตอร์
3.1 องค์ประกอบของคอมพิวเตอร์
รัสนา สิงหปรีชา
 
บทที่ 2 ข้อมูล สารสนเทศ และความรู้
บทที่ 2  ข้อมูล สารสนเทศ และความรู้บทที่ 2  ข้อมูล สารสนเทศ และความรู้
บทที่ 2 ข้อมูล สารสนเทศ และความรู้
รัสนา สิงหปรีชา
 
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 โครงสร้างของภาษาซี
รัสนา สิงหปรีชา
 

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.1 องค์ประกอบของคอมพิวเตอร์
3.1 องค์ประกอบของคอมพิวเตอร์3.1 องค์ประกอบของคอมพิวเตอร์
3.1 องค์ประกอบของคอมพิวเตอร์
 
บทที่ 2 ข้อมูล สารสนเทศ และความรู้
บทที่ 2  ข้อมูล สารสนเทศ และความรู้บทที่ 2  ข้อมูล สารสนเทศ และความรู้
บทที่ 2 ข้อมูล สารสนเทศ และความรู้
 
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 โครงสร้างของภาษาซี
 

งานทำ Blog บทที่ 9

  • 1.
  • 2. ตัวแปรพอยน์เตอร์ (Pointer) เป็นตัวแปรพิเศษในภาษา C มีหน้าที่ เก็บตาแหน่งที่อยู่ (Address) ของตัวแปรอื่น ๆ ที่อยู่ในหน่วยความจา ซึ่ง ต่างจากตัวแปรทั่วไปที่ทาหน้าที่เก็บข้อมูล โดยมีรูปแบบการประกาศใช้ งานดังนี้ type *name; โดยที่ type เป็นชนิดของตัวแปรพอยน์เตอร์ โดยพิจารณาว่าจะประกาศ ตัวแปรพอยน์เตอร์เพื่อใช้เก็บที่อยู่ของตัวแปรชนิดใด * เป็นเครื่องหมายที่กาหนดให้ตัวแปรที่ประกาศเป็นพอยน์เตอร์
  • 3. ตัวอย่างการประกาศตัวแปรพอยน์เตอร์ int *pt_intCount; 1 char *pt_chName; 2 float *pt_fPrice; 3 1. ประกาศตัวแปรพอยน์เตอร์สาหรับเก็บตาแหน่งที่อยู่ของตัว แปรชนิด int เท่านั้น 2. ประกาศตัวแปรพอยน์เตอร์สาหรับเก็บตาแหน่งที่อยู่ของตัว แปรชนิด char เท่านั้น 3. ประกาศตัวแปรพอยน์เตอร์สาหรับเก็บตาแหน่งที่อยู่ของตัว แปรชนิด float เท่านั้น
  • 4. การใช้งานตัวแปรพอยน์เตอร์ ตัวแปรพอยน์เตอร์จะมีรูปแบบการใช้งานที่แตกต่างไปจากตั ว แปรทั่วไป เนื่องจากพอยน์เตอร์มีหน้าที่เก็บตาแหน่งที่อยู่ของตัวแปร ซึ่ง สามารถใช้งานได้ทั้งตาแหน่งที่อยู่ที่พอยน์เตอร์เก็บไว้ และสามารถใช้ งานข้อมูลที่ตาแหน่งที่อยู่นั้นบันทึกได้ด้วย โดยสามารถใช้งานได้ดังนี้ • การใช้งานเครื่องหมาย & เพื่ออ้างอิงถึงตาแหน่งที่อยู่ของตัวแปร • การใช้เครื่องหมาย * เพื่ออ้างอิงถึงข้อมูลที่ตาแหน่งที่อยู่ของตัวแปร บันทึกไว้
  • 5. การดาเนินการกับพอยน์เตอร์ การดาเนินการกับพอยน์เตอร์ เป็นการใช้งานตัวดาเนินการ ทางคณิตศาสตร์กับพอยน์เตอร์ โดยใช้ตัวดาเนินการ +, -, ++ และ -- ซึ่ ง ผลที่ ไ ด้ จ ะเป็ น การเลื่ อ นต าแหน่ ง ที่ อ ยู่ ข องตั ว แปรตาม ความหมายของตัวดาเนินการ คื อ ก าหนดให้ พ อยน์ เ ตอร์ ชี้ ไ ปยั ง ต าแหน่ ง ที่ อ ยู่ที่ สู ง ขึ้ น หรื อ กาหนดให้พอยน์เตอร์ชี้ไปยังตาแหน่งที่อยู่ที่ต่าลงนั่นเอง
  • 6. การใช้งานพอยน์เตอร์กับอาร์เรย์ ความสามารถอีกอย่างหนึ่งของพอยน์เตอร์ก็คือ การใช้ พอยน์เตอร์อ้างถึงตาแหน่งที่อยู่ของตัวแปรอาร์เรย์ ซึ่ง รวมไปถึ ง สตริ ง ซึ่ ง เป็ น ตั ว แปรอาร์ เ รย์ ข องอั ก ขระด้ ว ย พอยน์เตอร์ที่ใช้อ้างอิงตาแหน่งที่อยู่ของตัวแปรอาร์เรย์ โดยปกติ จ ะเป็ น การอ้ า งถึ ง ต าแหน่ ง ที่ อ ยู่ ข องตั ว แปร อาร์เรย์ตาแหน่งแรกเท่านั้น (อินเด็กซ์เป็น 0) เนื่องจาก ตาแหน่งอื่น ๆ จะต่อจากตาแหน่งแรกของตัวแปรอาร์เรย์ นั่นเอง
  • 7. การจัดการพื้นที่หน่วยความจาแบบไดนามิค (Dynamic Memory Allocation) การจั ด การพื้ น ที่ ห น่ ว ยความจ าแบบไดนามิ ค (Dynamic Memory Allocation) คือ การจัดการพื้นที่ หน่วยความจาโดยผู้เขียนโปรแกรมนั่นเอง เพราะใน บางครั้งการที่คอมพิวเตอร์จัดการหน่วยความจานั้น อาจเกิดปัญ หาในกรณีการจองพื้นที่หน่ วยความจา แบบคงที่ แล้ ว คอมพิ ว เตอร์ ไ ม่ ส ามารถจั ด สรร หน่วยความจาให้ได้ ทาให้การทางานของโปรแกรม อาจเกิดความผิดพลาดขึ้นได้
  • 8. การจัดการพื้นที่หน่วยความจาแบบไดนามิค (Dynamic Memory Allocation) การจั ด การหน่ ว ยความจ าแบบไดนามิ ค นี้ สามารถท าได้ โ ดย เรียกใช้งานฟังก์ชันต่าง ๆ ซึ่งอยู่ภายใต้ไลบารี stdlib.h ดังนี้ 1. ฟังก์ชันสาหรับการจองพื้นที่หน่วยความจา 2. ฟังก์ชันสาหรบคืนค่าหน่วยความจา 3. ฟังก์ชันสาหรับเปลี่ยนแปลงพื้นที่หน่วยความจา
  • 9. 1. ฟังก์ชันสาหรับการจองพื้นที่หน่วยความจา ได้แก่ ฟังก์ชัน malloc และฟังก์ชัน calloc ซึ่งมีรูปแบบการใช้งานดังนี้ void *malloc(size_t num_bytes); โดยที่ size_t num_bytes เป็นขนาดของหน่วยความจาที่ต้องการจองมี หน่วยเป็นไบต์ (Byte) กรณีที่จองหน่วยความจาได้สาเร็จ ฟังก์ชัน malloc จะคืนค่ากลับมาใน ลักษณะเป็นตัวเลขไม่สามารถเดาได้ และกรณีที่จองหน่วยความจาไม่สาเร็จ ฟังก์ชัน malloc จะคืนค่า NULL กลับมา
  • 10. void *calloc(size_t num_elements, size_t element_size); โดยที่ size_t num_elements เป็นจานวนที่ต้องการจองในหน่วยความจา size_t element_size เป็นขนาดของหน่วยความจาที่ต้องการจอง แต่ละตัวมีหน่วยเป็นไบต์ กรณีที่จองหน่วยความจาได้สาเร็จ ฟังก์ชัน calloc จะคืนค่ากลับมาใน ลักษณะเป็น 0 และกรณีที่จองหน่วยความจาไม่สาเร็จ ฟังก์ชัน calloc จะ คืนค่า NULL กลับมา
  • 11. 2. ฟังก์ชันสาหรับคืนค่าหน่วยความจา ได้แก่ ฟังก์ชัน free ซึ่งมีรูปแบบการใช้งานดังนี้ void free(void *prt); โดยที่ void *prt เป็นตัวแปรพอยน์เตอร์ที่ชี้ไปยังค่าตาแหน่งที่อยู่ใน หน่วยความจา ซึ่งเป็นผลมาจากฟังก์ชัน calloc และ malloc
  • 12. 3. ฟังก์ชันสาหรับเปลี่ยนแปลงพื้นที่หน่วยความจา ได้แก่ ฟังก์ชัน realloc ซึ่งมีรูปแบบการใช้งานดังนี้ void *realloc(void *stge_ptr, size_t element_size); โดยที่ void *stge_ptr เป็นตัวแปรพอยน์เตอร์ที่ชี้ไปยังค่าตาแหน่งที่อยู่ใน หน่วยความจาซึ่งเป็นผลมาจากฟังก์ชัน calloc และ malloc size_t element_size เป็นขนาดของหน่วยความจาที่ต้องการจองแต่ละตัว มีหน่วยเป็นไบต์
  • 13. ที่มา : คู่มืออบรมครูวิทยาศาสตร์ คณิตศาสตร์ คอมพิวเตอร์ โลก ดาราศาสตร์ และอวกาศ ระดับมัธยมศึกษาตอนปลาย หนังสือเรียนรายวิชาเพิ่มเติม การเขียนโปรแกรมเบื้องต้นด้วยภาษา C บริษทซัคเซสมีเดีย คู่มือเรียนเขียนโปรแกรมภาษา สานักพิมพ์ IDC PREMIER