Trong hầu hết những ngôn ngữ lập trình, kiểu dữ liệu đóng vai trò vô cùng quan trọng trong việc xác định những giá trị mà biến nhận được hoặc giá trị được hàm trả về. Bài viết sau sẽ tổng hợp những thông tin bổ ích để các bạn tiện theo dõi và nắm bắt được các kiểu dữ liệu trong C++.
Khái niệm về kiểu dữ liệu trong C++
Kiểu dữ liệu trong C++ được xem là đặc tính của biến để hỗ trợ máy tính nắm được kiểu dữ liệu mà chính biến đó lưu trữ. Nói cách khác, những kiểu dữ liệu này sẽ được phân loại thành nhiều kiểu dữ liệu cơ bản hoặc nâng cao.
Có bao nhiêu dạng kiểu dữ liệu trong C++?
Bạn có bao giờ thắc mắc là có bao nhiêu kiểu dữ liệu trong C++. Chuyên mục này sẽ giúp bạn gỡ bỏ khúc mắc liên quan đến vấn đều này. Trong ngôn ngữ lập trình C++, sẽ hỗ trợ ba dạng kiểu dữ liệu chính gồm: kiểu dữ liệu cơ bản, kiểu dữ liệu nâng cao và kiểu dữ liệu phức tạp.
Kiểu dữ liệu cơ bản
1. Kiểu số nguyên: kiểu số nguyên thường được dùng để lưu trữ những giá trị số nguyên. Thông thường, kiểu dữ liệu này sẽ được khai báo thông qua từ khóa “int”.
2. Kiểu số thực: kiểu số thực có thể được dùng cho việc lưu trữ những giá trị số thực. Loại kiểu dữ liệu này thường được sử dụng với từ khóa “float” hay “double”.
3. Kiểu ký tự: kiểu ký tự hỗ trợ cho việc lưu trữ những ký tự. Nó được khai báo thông qua từ khóa “char”.
4. Kiểu Boolean: kiểu Boolean thường tồn tại cho hai giá trị trả về là “True” hoặc “False”. Nó được dùng để kiểm tra điều kiện trong câu lệnh dạng điều kiện hay vòng lặp.
Kiểu dữ liệu phức tạp trong C++
Như đã trình bày ở trên, có hai loại kiểu dữ liệu nâng cao gồm: kiểu Enum và kiểu Void. Trong phần này, chúng tôi sẽ điểm qua đặc điểm của hai loại kiểu dữ liệu này.
1. Kiểu dữ liệu Enum
Đây là kiểu dữ liệu thường được dùng để định nghĩa một tập hợp những hằng số tên được liệt kê. Nói cách khác, những hằng số này thường được gán cho những giá trị số nguyên lần lượt theo mặc định và khởi đầu từ 0.
Tuy vậy, nhà phát triển hoàn toàn có thể tùy chỉnh cho việc tự định nghĩa giá trị theo hằng số. Ngoài ra, để định nghĩa kiểu dữ liệu Enum trong ngôn ngữ lập trình C++, chúng ta dùng từ khóa “enum”. Sau đó, hãy khai báo tên kiểu Enum tương ứng với những hằng số liệt kê.
Ví dụ:
enum Color { RED, GREEN, BLUE };
Như ví dụ trên, chúng ta có thể thấy được việc tự định nghĩa kiểu dữ liệu Enum với tên là “Color”. Không những vậy, sẽ có ba hằng số như Red, Blue, hay Green. Những hằng số đó sẽ được chỉ định theo những giá trị số nguyên lần lượt và trong đó Red được cho giá trị gán là 0. Sau đó, Green là giá trị 1 và Blue được gán giá trị 2. Thực tế, chúng ta hoàn toàn tự định nghĩa giá trị cho những hằng số.
Ví dụ:
enum Color { RED = 1, GREEN = 2, BLUE = 4 };
Từ ví dụ trên cho thấy người dùng có thể định nghĩa kiểu dữ liệu Enum với tên là “Color” kèm theo ba hằng số gồm: Red, Green, và Blue. Lúc này, những hằng số sẽ có các giá trị gán tương ứng lần lượt là: 1,2,4.
Bên cạnh đó, một trong số các ứng dụng quan trọng của kiểu dữ liệu Enum trong ngôn ngữ lập trình C++ chính là khi người dùng mong muốn định nghĩa những giá trị liên quan đến tập hợp những trạng thái. Trong đó, kể đến ví dụ như: trạng thái của đối tượng trong game hay trạng thái của ứng dụng bất kỳ.
2. Kiểu dữ liệu Void
Kiểu dữ liệu tiếp theo mà chúng tôi muốn nói đến là kiểu dữ liệu Void. Đây là kiểu dữ liệu vô cùng độc đáo vì nó không có giá trị và thường được dùng khi hàm không nhất thiết phải trả về bất cứ giá trị nào. Ví dụ như là hàm đó sẽ không bị trả giá trị về và chỉ thực thi một vài câu lệnh.
Cú pháp khai báo hàm để dùng kiểu dữ liệu Void:
void function_name();
Ví dụ:
#include <iostream> using namespace std; void print_hello() { cout << "Hello, World!" << endl; } int main() { print_hello(); return 0; }
Người dùng có thể định nghĩa một hàm với tên là “print_hello” kèm theo kiểu dữ liệu trả về là Void. Tức là hàm này sẽ không đưa về một giá trị nào. Nó chỉ làm nhiệm vụ là in dòng chữ “Hello, World!” ra màn hình.
Sau đó, hàm “print_hello” sẽ được gọi từ hàm main thông qua việc khai thác tên của nó. Tiếp đến, kiểu dữ liệu Void thường được dùng ở những con trỏ Void và hỗ trợ trỏ đến vùng nhớ mặc dù không biết kiểu dữ liệu trên vùng nhớ này.
Những con trỏ Void sẽ được dùng ở những chương trình động và tạo ra sự đa dạng cũng như linh hoạt.
Kiểu dữ liệu nâng cao
Bên cạnh những kiểu dữ liệu cơ bản trong C++, ngôn ngữ lập trình này còn hỗ trợ thêm những kiểu dữ liệu nâng cao khác.
1. Kiểu long double
Kiểu dữ liệu này có độ dài chuẩn xác khá cao với 80 bit. Chính vì vậy, chúng tôi khuyên các bạn nên dùng kiểu dữ liệu này cho việc định nghĩa những biến với độ tối ưu cao.
Ví dụ:
long double x = 3.14159265358979323846264338327950288419716939937510L;
2. Kiểu String
Dùng để lưu trữ chuỗi ký tự. Thông thường, nó được định nghĩa theo thư viện chuẩn string và những gì cần là file header để sử dụng nó.
Ví dụ:
#include <string> using namespace std; string name = "John Doe";
3. Kiểu mảng (Array)
Mảng trong C++ là kiểu dữ liệu có vai trò lưu trữ nhiều giá trị với cùng kiểu dữ liệu. Lúc này, người dùng truy cập tới mỗi phần tử trong mảng thông qua việc dùng chỉ số của nó.
int numbers[] = {1, 2, 3, 4, 5};
4. Kiểu con trỏ (Pointer)
Vai trò của kiểu này là dùng để lưu trữ địa chỉ bộ nhớ của biến. Không những thế, nó cũng hỗ trợ trong việc truy cập tới những giá trị trên biến dựa trên địa chỉ của nó.
Ví dụ:
int x = 5; int *p = &x;
5. Kiểu cấu trúc (struct)
Dùng để lưu trữ những biến với kiểu dữ liệu khác nhau thuộc cùng một đối tượng. Những cấu trúc này thường được dùng để định nghĩa những đối tượng phức tạp trong chương trình.
Ví dụ: Hãy định nghĩa một cấu trúc cho việc lưu trữ thông tin sinh viên như sau.
#include <iostream> using namespace std; struct SinhVien { string ten; int tuoi; float diemTB; }; int main() { SinhVien sv1; sv1.ten = "John Doe"; sv1.tuoi = 20; sv1.diemTB = 8.5; cout << "Ten: " << sv1.ten << endl; cout << "Tuoi: " << sv1.tuoi << endl; cout << "Diem trung binh: " << sv1.diemTB << endl; return 0; }
Kết quả:
#include <iostream> using namespace std; struct SinhVien { string ten; int tuoi; float diemTB; }; int main() { SinhVien sv1; sv1.ten = "John Doe"; sv1.tuoi = 20; sv1.diemTB = 8.5; cout << "Ten: " << sv1.ten << endl; cout << "Tuoi: " << sv1.tuoi << endl; cout << "Diem trung binh: " << sv1.diemTB << endl; return 0; }
Ví dụ trên cho thấy việc định nghĩa một cấu trúc ‘SinhVien’ kèm theo những thành phần ‘ten’, ‘tuoi’, và ‘diemTB’. Sau đó, tạo một biến ‘sv1’ với kiểu ‘SinhVien’ cũng như gán giá trị tương ứng theo những thành phần của nó. Cuối cùng, in giá trị cho những thành phần này thông qua việc dùng dấu chấm để truy cập tới chúng.
Kết
Các kiểu dữ liệu trong C++ thật ra không quá phức tạp như bạn nghĩ. Chúng tôi tin rằng bài viết này đã giúp ích phần nào cho người lập trình trong việc tìm hiểu và sử dụng kiểu dữ liệu C++ được linh hoạt và hiệu quả hơn trong tương lai.