17 Jul 2016
pointer เป็นชนิดข้อมูลประเภทหนึ่งที่สร้างจากชนิดข้อมูลแบบพื้นฐานทั่วไป โดยชนิดข้อมูลแบบ pointer จะแตกต่างกับชนิดข้อมูลพื้นฐานตรงที่ชนิดข้อมูลแบบพื้นฐานจะเก็บและดึงข้อมูลจากตัวแปรโดยตรง แต่ชนิดข้อมูลแบบ pointer จะเก็บค่าที่อยู่(Address) ของตัวแปรอื่น และใช้ค่าที่อยู่นี้อ้างอิงไปยังข้อมูลที่เก็บอยู่ในตัวแปรนั้นอีกที เพื่อทําการเก็บและดึงข้อมูลจากตัวแปรนั้นอีกที
pointer เป็นตัวแปรชนิดหนึ่งดังนั้น มันจึงมีที่อยู่ในหนวยความจํา(Memory) เหมือนกับตัวแปรอื่นๆทั่วไป โดยตัวของ pointer นั้นหน้าที่หลักของมันคือ ชี้ไปยัง address ใดๆ เพื่อจัดการกับข้อมูลที่เก็บอยู่ใน address นั้นๆ ถ้าประกาศตัวแปร int a = 3; จะหมายถึง สร้างตัวแปรชนิด integer ชื่อว่า a และเก็บจํานวนเต็ม 3 ไว้ในตัวมัน แต่หากประกาศตัวแปร pointer ขึ้นมาใช้งาน จะกําหนดค่าเลขจํานวนเต็ม 3 ให้กับตัวแปรโดยตรงไม่ได้ เพราะอย่างที่กล่าวมาข้างต้นตัวแปร pointer เป็นเพียงแค่ตัวชี้ ดังนั้นเราจึงต้องกําหนด pointer ชี้ไปยังตัวแปร a ก่อน pointer จึงจะมีข้อมูลเท่ากับ 3
รูปแบบการประกาศตัวแปร pointer คือ
ชนิดข้อมูล *ชื่อตัวแปรpointer
ตัวอย่าง
int *p; //คือประกาศตัวแปร p เป็น pointer มีชนิดข้อมูลเป็นจํานวนเต็ม
char *p1; //คือประกาศตัวแปร p1 เป็น pointer มีชนิดข้อมูลเป็นตัวอักษร
float *p2; //คือประกาศตัวแปร p2 เป็น pointer มีชนิดข้อมูลเป็นเลขจํานวนเต็ม
หากประกาศตัวแปร pointer เป็นชนิดข้อมูลประเภทใดแล้ว ตัวแปร pointer จะต้องชี้ไปยังข้อมูลประเภทนั้น เช่น
int a = 100;
int *p1;
char b = 'Q'
char *p2;
p1 = &a;
p2 = &b;
การประกาศตัวแปรขึ้นใช้งานนั้น ไม่ว่าจะเป็นการประกาศตัวแปรแบบพื้นฐาน ตัวแปรประเภทอาร์เรย์หรือตัวแปร pointer ก็ตาม ถ้าไม่ทําการกําหนดค่าเริ่มต้นให้กับตัวแปรเหล่านี้ ค่าที่ตัวแปรเก็บไว้ก็จะเก็บเป็นค่าขยะ ซึ่งไม่สามารถคาดเดาได้ว่าเป็นค่าอะไร เช่นถ้าประกาศ int *p; โดยไม่กําหนดค่าเริ่มต้นให้กับตัวมัน จะพบว่า p เก็บค่า address อะไรสักอย่างที่ไม่มีความหมาย คือเป็นค่าขยะนั่นเอง ดังนั้นเมื่อประกาศใช้งานตัวแปร pointer แล้วจําเป็นจะต้องกําหนดค่าเริ่มต้นให้กับมันด้วย หรือให้มันชี้ไปยัง address 0, NULL เช่น
int a = 20;
int *p1 = &a;
int *p2 = 0;
int *p3 = NULL;
pointer มีสัญลักษณ์สําคัญอยู่ 2 ตัวคือ
#include <stdio.h>
int main () {
int a = 20; //ประกาศตัวแปร int แล้วกําหนดค่า 20
int *p; //สร้างตัวแปร pointer ประเภท int
p = &a; //กําหนดให้ pointer p ชี้ไปยัง address ของตัวแปร a
//แสดงผล address ของตัวแปร a
printf("Address of a variable: %x\n", &a );
//แสดงผล address ที่ pointer ชี้ไป ซึ่งก็คือ address ของตัวแปร a
printf("Address stored in p variable: %x\n", p);
//แสดงผลข้อมูลที่ pointer ชี้ไป
printf("Value of *p variable: %d\n", *p);
return 0;
}
สวัสดีครับ ในบทความนี้เราจะมาทําความรู้จักกับ Podman กัน ซึ่งเป็นทางเลือกใหม่สําหรับผู้ที่ใช้งาน Docker โดยเราจะมาดูกันว่า Podman คืออะไร และมีความแตกต่างจาก Docker อย่างไร
เป็น passport สำหรับการท่องเที่ยวอุทยานแห่งชาติในเมืองไทย จัดทำขึ้นโดย ส่วนนันทนาการและสื่อความหมาย สำนักอุทยานแห่งชาติ กรมอุทยานแห่งชาติ สัตว์ป่า และพืชพันธ์ สามารถหาซื้อได้จากที่ทำการอุทยานแห่งชาติทุกที่ แต่ค่อนข้างหาซื้อยากครับเนื่องจากปีนึงจะจัดทำขึ้นปีละไม่กี่พันเล่ม
สมบัติของจำนวนเต็มเกี่ยวกับการบวกและการคูณ