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;
}
วิธีใช้ scp ใน ubuntuถ้าต้องการจะ copy file จาก server A ไปยัง server B สามารถใช้คําสั่ง scp โดยรูปแบบการใช้คือ
Hard disk WD My Passport เป็นรุ่นที่ตัวของ Hard disk เป็น Port USB มาบนบอร์ดเลย แทนที่จะเป็น SATA เหมือน Hard disk ทั่วไป เมื่อ USB เสียเราจะไม่สามารถนําข้อมูลออกมาได้ ซึ่งจะต่างจาก Hard disk ทั่วๆไป ที่สามารถถอดตัว Hard disk มาจัมพ์กับ Computer ผ่านทางสาย SATA เพื่อนําข้อมูลออกมาได้
ในบทความที่แล้วเราได้ทําความรู้จักกับ ESP8266 กันแล้ว ในบทความนี้เราจะมาพูดถึงวิธีการใช้งาน ESP8266 ด้วย Arduino IDE โดยจะใช้ ภาษา c/c++ ในการเขียนโปรแกรม