Khi mô tả một biến, hệ điều hành sẽ cung cấp một số lượng ô nhớ cần thiết để lưu trữ giá trị của biến. Chúng ta không quyết định một cách trực tiếp vị trí chính xác để lưu trữ biến bên trong mảng các ô nhớ đó. May mắn thay, tác vụ này hoàn toàn tự động trong suốt quá trình Runtime của hệ điều hành. Tuy nhiên, trong một vài trường hợp, chúng ta có thể quan tâm đến địa chỉ mà các biến được lưu trữ để điều khiển chúng.
Địa chỉ mà các biến lưu bên trong bộ nhớ được gọi là sự tham chiếu đến biến đó. Sự tham chiếu đến biến có thể nhận được bằng cách bổ sung dấu &
trước định danh của biến – nó được gọi là địa chỉ của biến đó.
Ví dụ:
int a = 10; int *adr = &a;
Khi khởi gán biến *adr cho địa chỉ của biến a, thì từ thời điểm này, việc truy cập tên biến a với tham chiếu & hoàn toàn không liên quan đến giá trị của nó, nhưng ta vẫn nhận được giá trị của biến a nhờ vào biến *adr.
Giả sử biến andy được lưu vào trong bộ nhớ tại ô nhớ 1776. Chúng ta có thể minh họa đoạn chương trình sau bằng lược đồ bên dưới
int andy = 25; int fred = andy; int* ted = &andy;
andy
25
1775 1776 1777
fred & -ted
C
+
+
Đầu tiên giá trị 25 sẽ được gán cho biến andy, biến fred được khởi tạo từ biến andy (sao chép giá trị). Biến ted sẽ tham chiếu đến địa chỉ của biến andy, mà không sao chép giá trị của biến này vào ô nhớ của nó.