C và C++ có gì khác nhau?
C và C++ có nhiều điểm tương đồng nhưng cũng có rất nhiều điểm khác nhau. Cùng tham khảo bài viết dưới đây nhé!
C và C++ đều là hai ngôn ngữ lập trình cấp thấp nổi tiếng. Dù hai ngôn ngữ nghe tương tự nhau nhưng chỉ hai dấu cộng phía sau, tính năng & cách sử dụng của chúng đã có sự khác biệt đáng kể.
C là ngôn ngữ lập trình theo thủ tục với hệ thống tĩnh, còn C++ là một phiên bản mở rộng của C, với sự hỗ trợ cho lập trình hướng đối tượng. Vì thế, học C là phù hợp và giúp cải thiện ngôn ngữ trong C++. Trong số những ngôn ngữ lập trình hàng đầu, C và C++ là hai lựa chọn được yêu thích nhất.
Điểm tương đồng giữa C và C++
- Cả hai ngôn ngữ đều 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 | <stdio.h> | <iostream.h> |
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<stdio.h>
int main(){
int x, y, sum=0;
printf("Enter the two integers x and 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<iostream>
using namespace std;
void main() {
int a, b, sum=0;
cout<<"Enter the value for two integers: ";
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<<a<< " + " <<b<< " = " <<sum;
return 0;
}
Trên đây là điểm khác biệt cơ bản giữa hai ngôn ngữ C và C++. Hi 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.
Nguồn: Quantrimang
Khoa Công nghệ thông tin