ตัวแปรชนิดพอยเตอร์เป็นตัวแปรชนิดพลวัต เครื่องยังไม่ได้เตรียมตัวแปรล่วงหน้า ดังนั้นทุกครั้งที่ต้องการเก็บในเซลล์ที่ชี้โดยพอยเตอร์จำเป็นต้องสร้างเซลล์ขึ้นมาก่อนด้วยใช้คำสั่ง new ดังนี้
หากประกาศ int *p, *q;
คำสั่ง p = new int ; มีผลทำให้เครื่องสร้างเซลล์เพื่อเตรียมการเก็บค่าชนิดจำนวนเต็ม แต่เซลล์นี้จะเข้าถึงด้วยพอยเตอร์ pเท่านั้น ดังภาพ
P
เมื่อสร้างเซลล์ด้วยคำสั่ง new เรียบร้อยแล้ว หากต้องการนำค่า 8 เข้าไปเก็บยังเซลล์ที่ชี้โดย p สามารถใช้คำสั่ง
8
*p = 8; มีผลให้ p
12
*p = *p+4 ; มีผลให้ p
2
*p = *p% 5; มีผลให้ p
ต่อไปนี้เป็นตัวอย่างเพิ่มเติมเกี่ยวกับการกำหนดค่าให้กับตัวแปรชนิดพอยเตอร์และเซลล์ที่ชี้โดยพอยเตอร์
หากประกาศให้
#define STRing20 20
float *r , *s ;
char *n , *m ;
char *frist, *second ;
|
คำสั่ง |
ภาพของหน่วยความจำ |
||||
|
r = new float ; |
R |
||||
|
*r = 2.3 ; |
2.3 r |
||||
|
*r = *r *2 ; |
4.6 r |
||||
|
S = r ; |
R
s |
||||
|
S = new float ; |
4.6
s |
||||
|
*s = *r ; |
4.6 R
4.6 s |
||||
|
*s = *s + 1.0 ; |
4.6 R
5.6 s |
||||
|
N = new char ; |
|
||||
|
*n = ‘#’ ; |
# n |
||||
|
M = n ; |
N
M
|
||||
|
First = new char [STRING20] ; Second = new char [STRING20] ; |
First
second |
||||
|
Strcpy (first, “Aree”) ; Strcpy(second,”suda”); |
Aree First
Suda |