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

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 61: แถว 61:
  
 
== Passing parameter by reference ==
 
== Passing parameter by reference ==
 +
 +
In C, function parameters are passed by value only.  Therefore, if you want to write function <tt>swap</tt> that swaps two variables, you cannot do it like this:
 +
 +
<source lang="cpp">
 +
function swap(int a, int b)
 +
{
 +
  int temp = a;
 +
  a = b;
 +
  b = temp;
 +
}
 +
</source>
 +
 +
The reason for that is that the code only modifies "local" copies of <tt>a</tt> and <tt>b</tt>.
 +
 +
Pointers come to rescue.
  
 
== Pointers and arrays ==
 
== Pointers and arrays ==
  
 
== Other links ==
 
== Other links ==

รุ่นแก้ไขเมื่อ 16:03, 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.

Passing parameter by reference

In C, function parameters are passed by value only. Therefore, if you want to write function swap that swaps two variables, you cannot do it like this:

function swap(int a, int b)
{
  int temp = a;
  a = b;
  b = temp;
}

The reason for that is that the code only modifies "local" copies of a and b.

Pointers come to rescue.

Pointers and arrays

Other links