RAM (viết tắt của bộ nhớ truy cập ngẫu nhiên) là bộ nhớ mà các chương trình của bạn có thể sử dụng để lưu trữ và xử lý dữ liệu. Bạn có thể tưởng tượng RAM là một dãy các ô nhớ có thể chứa dữ liệu trong quá trình chạy chương trình. Mỗi ô nhớ có một giá trị dữ liệu cụ thể.
Trong một số ngôn ngữ lập trình cũ hơn (như Apple Basic), bạn có thể truy cập trực tiếp vào các ô nhớ này.
Biến trong C++ (Variables)
Dẫn nhập
Ở bài học trước, GHI CHÚ TRONG C++ (Comments in C++), bạn đã đã nắm được các loại comment trong C++, và đã biết sử dụng nó như thế nào cho hợp lý.
Hôm nay, mình sẽ giới thiệu các bạn về Biến trong C++ (Variables). Nhiệm vụ của biến C++ Variable là gì?
Biến trong C++
Giống như toán học, trong lập trình, các bạn cũng sẽ giải những bài toán. Ví dụ: Bạn có bài toán giải phương trình bậc nhất: 2x – 6 = 0. Và bạn viết một chương trình để giải nó, như thế này:
int main()
{
// Xuất thông báo "2x - 6 = 0" ra màn hình console
std::cout << "2x - 6 = 0" << std::endl;
// Xuất kết quả nghiệm xstd::cout << “x = “ << (6 / 2) << std::endl;
return 0;}
Nhìn có vẻ đã ổn, bây giờ bạn tiếp tục muốn giải một phương trình bậc nhất khác: 6x + 9 = 0.
Vấn đề phát sinh từ đây, khi bạn muốn giải những bài toán với những số khác nhau, bạn phải viết lại nhiều lần. Nhưng bạn muốn chỉ viết chương trình một lần nhưng sử dụng trong mọi trường hợp, vậy nên khái niệm biến trong lập trình đã ra đời.
Trong lập trình, biến (variable) là tên của một vùng trong bộ nhớ RAM, được sử dụng để lưu trữ thông tin. Bạn có thể gán thông tin cho một biến, và có thể lấy thông tin đó ra để sử dụng. Khi một biến được khai báo, một vùng trong bộ nhớ sẽ dành cho các biến.
Bài học hôm nay, mình chỉ đề cập đến các biến số nguyên (integer variables). Số nguyên là các số nguyên dương (1, 2, 3, …), các số đối (-1, -2, -3, …) và số 0. Biến số nguyên (integer variables) là những biến dùng để lưu trữ các số nguyên.
Ví dụ:
// Khai báo biến số nguyên nVarName
// Giả sử nVarName được cấp vùng nhớ tại địa chỉ 0x0069
int nVarName;
Đây gọi là một câu lệnh khai báo, khi chương trình được chạy, đến dòng lệnh này, một vùng trong bộ nhớ RAM sẽ được cấp cho biến nVarName này. Ví dụ trong trường hợp này, biến nInterger được cấp một vùng nhớ tại địa chỉ 0x0069 trong RAM, vậy mỗi khi chương trình chạy đến dòng lệnh nào chứa biến nInterger, chương trình sẽ vào vùng nhớ 0x0069 để lấy giá trị của nó.
Sau khi một biến được khai báo, bạn muốn biến nVarName có một giá trị để sử dụng, câu lệnh gán với toán tử gán = (assignment operator) sẽ làm việc đó.
Ví dụ:
// Gán giá trị 96 cho vùng nhớ tại địa chỉ 0x0069
nVarName = 96;
Khởi tạo biến trong C++ (Defining a variable)
Ngay khi biến được định nghĩa, bạn lập tức có thể cung cấp một giá trị cho biến. Đó gọi là biến khởi tạo. Trong C++, có 2 cách cơ bản để khởi tạo 1 biến:
// Khởi tạo sao chép giá trị cho biến với toán tử gán =
int nVarName = 69; // copy initialization
// Khởi tạo trực tiếp giá trị cho biến với dấu ngoặc đơn ()int nVarName(69); // direct initialization
Mặc dù khởi tạo trực tiếp giống như một lời gọi hàm, nhưng compiler có thể phân biệt được giữa các biến và các function để có thể xử lý chính xác.
Uniform initialization in C++11
Khởi tạo sao chép và khởi tạo trực tiếp chỉ sử dụng cho một số loại biến, bạn không thể sử dụng để khởi tạo một biến chứa danh sách các giá trị. Vì vậy, C++ 11 đã cung cấp một cơ chế khởi tạo sử dụng cho tất cả các loại dữ liệu, gọi là khởi tạo đồng nhất (Uniform initialization).
// Uniform initialization
int nVarName{69}; // Khởi tạo giá trị 69
int nVarName{}; // Khởi tạo giá trị 0 (hoặc empty, tùy kiểu dữ liệu)
// Không như khởi tạo trực ti