pointerคืออะไร และสร้างอย่างไรในภาษาซี

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
WKsoft
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 872
ลงทะเบียนเมื่อ: 30/11/2021 9:35 am

pointerคืออะไร และสร้างอย่างไรในภาษาซี

โพสต์ที่ยังไม่ได้อ่าน โดย WKsoft »

เมื่อเราเขียนโปรแกรมย่อมต้องมีการใช้งานตัวแปร และตัวแปรก็มีหลายชนิดให้เราได้ใช้งานตามการใช้งานที่แตกต่างกันซึ่งชนิดข้อมูลพื้นฐานที่เราน่าจะทราบกันดีในภาษาซี เช่น int float char boolean double เป็นต้น แต่ยังมีตัวแปรชนิดหนึ่งที่มีการใช้งานในภาษาซี ซึ่งบางคนอาจจะรู้และใช้งานเป็นแต่สำหรับคนที่ยังไม่รู้มาดูกันได้เลย

pointer(พ้อยเตอร์) คือ ตัวแปรชนิดพิเศษในภาษาซี หน้าที่ของมันจะทำการเก็บตำแหน่งในหน่วยความจำ(address)
ของตัวแปรชนิดอื่นๆ แทนการเก็บข้อมูลเหมือนที่ตัวแปรพื้นฐานทำ ทำให้การใช้งานแตกต่างกับตัวแปรพื้นฐานเนื่องจาก ตัวแปรพ้อยเตอร์
ไม่ได้เก็บค่าโดยตรง แต่เป็นการเก็บตำแหน่งที่ค่านั้นอยู่ แล้วใช้ในการอ้างอิงถึงค่านั้น เพื่อดึงค่านั้นมาใช้งาน
การทำงานของพ้อยเตอร์.png
การทำงานของพ้อยเตอร์.png (18.43 KiB) Viewed 1979 times
การประกาศตัวแปรพ้อยเตอร์
  • รูปแบบ ชนิดข้อมูล *ชื่อตัวแปร;
การประกาศตัวแปรพ้อยเตอร์ ทำแบบเดียวกันกับการประกาศตัวแปรธรรมดาเพียงต่างกันที่ มีเครื่องหมาย *หน้าตัวแปรการประกาศตัวแปรพ้อยเตอร์จำเป็นต้องกำหนดค่าด้วยหากไม่กำหนด มันจะทำการสุ่มเก็บค่าaddressมั่วๆขึ้นมาฉะนั้นจำเป็นต้องกำหนดค่าเริ่มต้นด้วย เช่น กำหนดให้เป็น 0 หรือNULL

สัญลักษณ์สำคัญที่ทำงานกับพ้อยเตอร์ได้แก่
  • & ใช้ดึงค่าตำแหน่งในหน่วยความจำที่เก็บตัวแปร
  • * ค่าที่เก็บอยู่ในตำแหน่งที่พ้อยเตอร์นั้นชี้อยู่
ตัวอย่างการประกาศ และใช้ตัวแปรพ้อยเตอร์

โค้ด: เลือกทั้งหมด

#include <stdio.h>
int main() {
    int item = 100;      //ประกาศตัวแปรทั่วไป
    int *total = & item;//ประกาศตัวแปรแบบพ้อยเตอร์
       
    printf("address ของ item :%x\n",&item); //ที่อยู่ที่เก็บค่าของตัวแปร item
    printf("ค่าที่เก็บในtotal:%x\n",total);// ที่อยู่ของตัวแปร item ที่ พ้อยเตอร์เก็บไว้
    printf("ค่าของตัวแปรที่total ชี้ไป:%d\n",*total);//ค่าที่พ้อยเตอร์ total ชี้อยู่
    return 0;
}
ตัวอย่างเมื่อสั่งรันโค้ด และผลลัพธ์ที่ได้
pointer.png
pointer.png (47.06 KiB) Viewed 1979 times
จุดเด่นของพ้อยเตอร์ในภาษาซี
  • การใช้ตัวแปรพ้อยเตอร์ชี้ไปยังตำแหน่งในหน่วยความจำ ทำให้สามารถเข้าถึงตัวแปรที่่ต้องการได้โดยตรง
  • ทำให้การเขียนและอ่านข้อมูลที่มีจำนวนมากๆ มีประสิทธิภาพ
  • ช่วยให้จัดสรรหน่วยความจำแบบไดนามิคได้
การเขียนโปรแกรมต่างในปัจจุบัน มีทั้งการเขียนการควบคุมการทำงานของอุปกรณ์ในด้านฮาร์ดแวร์ เช่นประเภทไอซี คอนโทรลเลอร์ การใช้งานตัวพ้อยเตอร์จะช่วยให้
มีประสิทธิภาพการทำงานมากขึ้นไม่มากก็น้อย

อ้างอิง
https://www.studytonight.com/c/pointers-in-c.php
https://thiti.dev/blog/5474/
https://www.w3schools.in/c-tutorial/pointers/

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 92