ผลต่างระหว่างรุ่นของ "Adt lab/pointers"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 50: แถว 50:
 
   a++;                      // step 3
 
   a++;                      // step 3
 
</source>
 
</source>
 +
 +
As <tt>p</tt> points to <tt>a</tt>'s location, if we change the value of <tt>a</tt>, <tt>*p</tt> also changes (because it is the "same" piece of data).
  
 
<source lang="cpp">
 
<source lang="cpp">
แถว 55: แถว 57:
 
   a = *p;
 
   a = *p;
 
</source>
 
</source>
 +
 +
We can change <tt>p</tt> to point to other places.
  
 
== Pointers and arrays ==
 
== Pointers and arrays ==
  
 
== Other links ==
 
== Other links ==

รุ่นแก้ไขเมื่อ 15:50, 27 สิงหาคม 2558

This is part of adt lab.

Pointers

In C/C++, there is a special kind of types: pointers. Pointer variables keep locations in the memory. To declare a pointer variable, we use symbol *:

type* variable;

For example, the following code declares p as a pointer to an integer.

  int* p;

To see how pointers work, let's follow this code.

  int a = 10;
  int b = 20;

  p = &a;
  cout << (*p) << endl;

  *p = 100;
  cout << a << endl;

  a++;
  cout << (*p) << endl;

  p = &b;
  a = *p;
  cout << a << endl;

Let's look at each step.

  p = &a;                   // step 1

To obtain a location of any variable, we use operator & (called a reference operator). After step 1, p keeps the location of a.

  *p = 100;                 // step 2

To dereference a pointer variable, we use operator *. Therefore *p refers to the "data" at the location that p points to. After step 2, *p (which is essentially a) becomes 100.

  a++;                      // step 3

As p points to a's location, if we change the value of a, *p also changes (because it is the "same" piece of data).

  p = &b;                   // step 4
  a = *p;

We can change p to point to other places.

Pointers and arrays

Other links