ตัวแปรชนิดพอยเตอร์เป็นตัวแปรชนิดพลวัต

                    ตัวแปรชนิดพอยเตอร์เป็นตัวแปรชนิดพลวัต  เครื่องยังไม่ได้เตรียมตัวแปรล่วงหน้า  ดังนั้นทุกครั้งที่ต้องการเก็บในเซลล์ที่ชี้โดยพอยเตอร์จำเป็นต้องสร้างเซลล์ขึ้นมาก่อนด้วยใช้คำสั่ง  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   

 

                    R

 

       

 


                     s

*s  =  *r ;

     4.6  

 

                     R

      4.6 

 

 


                     s

*s = *s + 1.0 ;

 

      4.6 

                      R

      5.6

 

 


                      s

N = new char ;

     

 

                      n

*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