- Trang chủ
- Giới thiệu
- Du học
- Đào tạo ngắn hạn
- Đào tạo chuyên sâu
- Tin Tức
- Học viên
- Blog
- Tin THPT
- Liên hệ
Khi mới bắt đầu học, có thẻ sẽ có rất nhiều bạn nhầm lẫn giữa ngôn ngữ C và C++ bởi thời gian học một ngôn ngữ lập trình khá ngắn và đa số các bạn chỉ ở mức độ cơ bản đủ để viết những chương trình demo cho những môn học chứ không hiểu từng tính năng của nó hoạt động ra sao. ITPlus sẽ giúp bạn hân biệt được ngôn ngữ lập trình C và C++ trong bài viết dưới đây nhé.
1. Sự khác biệt giữa C và C++
Cấc IT trên thế giới đều biết về 2 ngôn ngữ lập trình C và C++. C++ là ngôn ngữ ra đời sau ngôn ngữ C, mở rộng hơn ngôn ngữ C nhằm tăng cường tính an toàn và cung cấp cho lập trình viên nhiều lựa chọn hơn. Đặc biệt là cung cấp một cách tiếp cận tốt hơn đối với những chương trình có quy mô lớn.
C++ cũng là ngôn ngữ lập trình lớn hơn với nhiều tính năng và phức tạp hơn so với C. Dưới đây sẽ là 10 điểm khác biệt chính nhất của 2 ngôn ngữ này.
Đối với ngôn ngữ lập trình C |
Không phải ngôn ngữ hướng đối tượng. |
Là một ngôn ngữ lập trình thủ tục. |
Chỉ hỗ trợ các structure. |
Không có biến tham chiếu, chỉ hỗ trợ con trỏ. |
Sử dụng các hàm scanf và printfđể nhập xuất. |
Không thể khai báo hàm trong các structure. |
Được xem là một ngôn ngữ lập trình cấp thấp. |
Không hỗ trợ các hàm inline, thay vào đó có thể sử dụng khai báo #define |
Sử dụng phương pháp tiếp cận từ trên xuống (top-down). |
Là ngôn ngữ lập trình hướng chức năng (function driven). |
Đối với ngôn ngữ lập trình C++ |
Là một ngôn ngữ hướng đối tượng (gồm 4 khái niệm về hướng đối tượng) |
Không phải là ngôn ngữ lập trình thủ tục. |
Hỗ trợ các lớp và đối tượng. |
Hỗ trợ cả biến tham chiếu và con trỏ. |
Sử dụng các hàm cin>> và cout<< để nhập xuất. |
Có thể khai báo hàm trong các structure. |
Được xem là sự kết hợp giữa ngôn ngữ lập trình cấp thấp và cấp cao. |
Hỗ trợ các hàm inline. |
Sử dụng phương pháp tiếp cận từ dưới lên (bottom-up). |
Là ngôn ngữ lập trình hướng đối tượng (Object driven). |
– Dưới đây là danh sách các tính năng được hỗ trợ trong C++ (C không hỗ trợ).
Classes
Member functions
Constructors and destructors
Derived classes
Virtual functions
Abstract classes
Access control (public, private, protected)
friend functions
Pointers to members
static members
mutable members
Operator overloading
References
Templates
Inline functions
Default arguments
Function overloading
Namespaces
Exception handling
Run-time type identification
// comments
True const
Declarations as statements
Automatically typedef’d struct tags
Type safe linkage
new and delete
bool keyword
Safer and more robust casting
2. Sự khác biệt giữa endl và ‘ ’ trong C++
Trong C++, để kết thúc một dòng sang dòng mới ta có thể sử dụng std::endl hoặc ‘ ’ , nhưng hoạt động của từng cách là khác nhau:
Nếu bạn sử dụng tính năng debug thì sẽ thấy rõ hơn sự khác biệt này. Lời khuyên là bạn nên sử dụng std::endl sẽ tốt hơn so với ‘ ’ vì bộ nhớ đệm được giải phóng hiệu quả hơn.
Ví dụ: sử dụng cả std::endl và ‘ ’ . (Bạn không thể thấy bước xóa bộ đệm trong quá trình này)
#include <iostream>
using namespace std;
int main()
{
cout <<"Testing 1" <<endl;
cout <<"Testing 2 ";
return 0;
}
Output của chương trình:
Testing 1
Testing 2
3. Sự khác biệt giữa printf() và cout<<
Một vài câu hỏi liên quan:
4. Sự khác biệt giữa NULL, 0, và nul
– NULL là một macro được định nghĩa trong các header chuẩn.
– 0 là hằng số nguyên.
– là một hằng ký tự.
– nul là tên của hằng ký tự.
Tất cả những ký hiệu trên không thể hoán đổi cho nhau.
– NULL được sử dụng cho các con trỏ, chỉ có thể được định nghĩa như ((void *)0), đây là nguyên nhân gây ra các vấn đề với con trỏ.
– 0 có thể được sử dụng ở bất cứ đâu, nó đại diện chung cho kiểu giá trị ‘không’ và trình biên dịch sẽ sắp xếp mọi thứ.
– chỉ được sử dụng trong các trường hợp nhất định.
– nul không được định nghĩa trong C hay C++, bạn không nên sử dụng nó, trừ khi bạn định nghĩa nó một cách thích hợp giống như:
#define nul ''
5. Sự khác nhau giữa ‘&’ và ‘*’ trong C+
– Trong C++, ‘&’ được sử dụng trong việc đa năng hóa (overload) toán tử, lấy địa chỉ của một đối tượng, thực hiện phép toán AND, hoặc thực hiện bất cứ điều gì liên quan đến kiểu người dùng định nghĩa nếu đa năng hóa nó, hoặc tạo một tham chiếu. Trong khuôn khổ bài viết này, tôi sẽ đề cập đến ‘&’ trong trường hợp là tham chiếu (reference).
– Một tham chiếu là tên thay thế cho một đối tượng, một tên tương tự cùng truy cập đến một vị trí trong bộ nhớ, nhưng có tên khác nhau. Sự khác biệt lớn nhất giữa con trỏ (pointer) và tham chiếu (reference) là một tham chiếu không cần truy cập đến một vùng nhớ.
– Ví dụ: một tham chiếu
int i = 1;
int& r = i; // i và r cùng tham chiếu đến một vùng nhớ
r = 2; // i = 2
– Con trỏ là một biến riêng biệt có chứa đại chỉ bộ nhớ như là giá trị của nó, đó là địa chỉ có thể truy cập đến vùng nhớ. Chức năng của con trỏ tương tự các tham chiếu.
int i = 1;
int *p = &i; // con trỏ p trỏ tới địa chỉ biến i
*p = 2 // i = 2;
– Sự khác biệt lớn nhất giữa tham chiếu và con trỏ là con trỏ có thể được xử lý như một biến bất kỳ. Do đó ta cũng có thể thực hiện các toán tử trên con trỏ.
char *p = "Test";
p++; // p = "est";