ผลต่างระหว่างรุ่นของ "Adt lab/pointers"
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 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.