C và C++ là hai ngôn ngữ lập trình cấp thấp rất phổ biến. Mặc dù chúng có vẻ giống nhau, nhưng thực tế chúng khác biệt rất nhiều. Trong bài viết này, chúng ta sẽ liệt kê những điểm khác biệt quan trọng giữa C và C++.
Điểm tương đồng giữa C và C++
- Cả hai ngôn ngữ có cú pháp tương tự nhau.
- Cấu trúc code của cả hai ngôn ngữ đều giống nhau.
- Độ phức tạp của cả hai ngôn ngữ tương tự nhau.
- Chúng có cùng cú pháp cơ bản. Gần như tất cả toán tử và từ khóa của C đều nằm trong C++ và có chức năng tương tự.
- C++ có ngữ nghĩa mở rộng hơn C, nhưng ngữ pháp cơ bản là giống nhau.
- Mô hình bộ nhớ cơ bản của cả hai rất gần với hardware.
- Cả hai ngôn ngữ đều có các khái niệm giống nhau về stack, heap, file-scope và biến tĩnh.
Sự khác biệt giữa C và C++
Tham số
C | C++ | |
---|---|---|
Mô hình lập trình | Ngôn ngữ lập trình theo cấu trúc hoặc thủ tục. | Ngôn ngữ lập trình theo cấu trúc và hướng đối tượng. |
Lịch sử | Do nhà khoa học Dennis Ritchie phát triển vào năm 1972 tại phòng thí nghiệm Bell. | Do Bjarne Stroustup phát triển vào năm 1979. |
Phương pháp | Theo phương pháp từ trên xuống dưới. | Theo phương pháp từ dưới lên trên. |
Từ khóa | Chứa 32 từ khóa | Chứa 63 từ khóa |
Kiểu dữ liệu | Hỗ trợ các kiểu dữ liệu tích hợp. | Hỗ trợ cả kiểu dữ liệu tích hợp và do người dùng xác định. |
Phần mở rộng file | .c | .cpp |
File header |
|
|
Phân bổ và giải phóng bộ nhớ | Dùng calloc() và malloc() cho phân bổ bộ nhớ động và free() cho bỏ phân bổ bộ nhớ. | Dùng toán tử mới để phân bổ bộ nhớ và xóa toán tử để giải phóng bộ nhớ. |
Chỉ định truy cập | Không hỗ trợ chỉ định truy cập. | Hỗ trợ chỉ định truy cập. |
Bảo mật | C không có bất kỳ tính năng bảo mật nào nên có thể bị người ngoài thao túng. | C++ là một ngôn ngữ an toàn vì nó cung cấp các tính năng bảo mật như ẩn và đóng gói dữ liệu. |
Biến tham chiếu | Không hỗ trợ. | Hỗ trợ. |
Overloading và Overriding hàm | Không hỗ trợ. | Hỗ trợ. |
Xử lý ngoại lệ | C không hỗ trợ xử lý ngoại lệ trực tiếp, nó sử dụng chức năng hỗ trợ xử lý ngoại lệ. | C++ hỗ trợ trực tiếp xử lý ngoại lệ với sự trợ giúp của khối try - catch. |
Phân chia chương trình | C là ngôn ngữ thủ tục, vì vậy mã viết bằng C được chia thành các khối riêng biệt được gọi là hàm. | C++ là ngôn ngữ hướng đối tượng, do đó viết code và được chia thành lớp, đối tượng. |
Hàm nội tuyến | Không hỗ trợ. | Hỗ trợ. |
Kiểu hướng | Ngôn ngữ hướng hàm. | Ngôn ngữ hướng đối tượng. |
Khả năng tương thích | Code được viết bằng C có thể chạy trên trình biên dịch C++ vì C là ngôn ngữ nền tảng. | Code viết bằng ngôn ngữ C++ có thể chạy trên trình biên dịch C vì ngôn ngữ C++ bao gồm khái niệm OOP. |
Dữ liệu và hàm | Tách biệt. | Được đóng gói chung với nhau. |
Hàm input và output | Các hàm scanf() và printf() được sử dụng để lấy đầu vào và đầu ra tương ứng. | Các hàm cin và cout được sử dụng để lấy đầu vào và đầu ra tương ứng. |
Lập trình ứng dụng | Ngôn ngữ C phù hợp hơn để triển khai ở mức độ thấp như trình điều khiển mạng, trình soạn thảo văn bản, trình biên dịch chương trình, v.v. | Ngôn ngữ C++ phù hợp hơn để triển khai cấp cao như phát triển trò chơi, đồng hồ thông minh, hệ thống nhúng, v.v. |
Namespace | Để tránh xung đột và sắp xếp mã, cần có namespace nhưng C không hỗ trợ. | Hỗ trợ namespace. |
Được sử dụng bởi | MySQL, Windows Kerne, Oracle Database, Telegram... | Google Chrome, Torque 3-D game, Microsoft Office, ... |
Ví dụ về C và C++
Cộng hai số nguyên
C
#include
int main(){
int x, y, sum=0;
printf("Nhập vào hai số nguyên x và y: ");
scanf("%d %d", &x, &y);
// tính tổng hai số nguyên
sum = x + y;
printf("%d + %d = %d", x, y, sum);
return 0;
}
C++
#include
using namespace std;
void main() {
int a, b, sum=0;
cout"Nhập vào giá trị của hai số nguyên: ";
cin>>a>>b;
// tính tổng của hai số được lưu trong biến sum
sum = a + b;
// in tổng của hai số
cout " + " " = "
Trên đây là những điểm khác biệt cơ bản giữa hai ngôn ngữ C và C++. Hy vọng bài viết giúp bạn có lựa chọn chính xác về việc nên dùng C hay C++ để lập trình.