Khác nhau giữa C và C++ trong khai báo hằng?

Bài viết được post tại: http://portal.daynhauhoc.com/p/khac-nhau-giua-c-va-c-trong-khai-bao-hang/

Giả sử ta có đoạn code1 sau: const int MAX = 100; static int stamina[MAX]; Câu hỏi đặt ra là đoạn code trên có hợp lệ trong C và C++ hay không? Câu trả lời là Không, đối với C Có, đối với C++ Đây là điểm khác nhau giữa…… xem thêm bài viết

4 Likes

Hay lắm a @ltd, từ trước đến giờ e cũng ko rõ cái này đâu vì toàn học bằng VS2010 và tạo project C++, ko thấy được sự khác nhau này

1 Like

cảm ơn anh Đạt nhiều lắm ạ :slight_smile: mới đầu e cứ ngỡ const bên C chứ, giờ em mới biết :smiley:

1 Like

const có cả bên C và C++ :slight_smile:

Em vừa đọc được trong tài liệu C có đoạn này, chắc là có liên quan :blush:

Ngôn ngữ C tồn tại rất nhiều versions. Version trước đây, gọi là C99, cho phép tạo các dynamic array, có nghĩa là mảng với kích thước được khai báo bởi một biến số:

int kichThuoc = 5;
int array[kichThuoc];

Cách viết này không được thông dụng lắm đối với các compiler, nhiều khi chương trình chạy đến ở dòng thứ 2 sẽ dừng lại. Từ đầu đến giờ, tôi hướng dẫn bạn ngôn ngữ C89 nên chúng ta sẽ tuyệt đối không dùng dòng code thứ 2

C tồn tại 3 versions

  • C89 (Hay C90)
  • C99
  • C11

Đạt lại không nghĩ như vậy, tại Đạt mới thử với MinGW thì thấy vẫn dùng được.

PS E:\workspace\c\dnh> cat .\array.c
int main()
{
        int kichThuoc = 5;
        int array[kichThuoc];
}
PS E:\workspace\c\dnh> gcc -std=c89 .\array.c
PS E:\workspace\c\dnh>

Đạt build với C89 vẫn chạy được.


Trong khai bài viết ở trên, Đạt sử dụng static tức là khai báo tĩnh, mảng static sẽ được tạo ra ngay lúc chương trình khởi tạo.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?