30/09/2018, 17:03

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

Nguyễn Hữu Điền viết 19:14 ngày 30/09/2018

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

Võ Hoài Sơn viết 19:13 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 19:10 ngày 30/09/2018

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

Thành Phạm viết 19:13 ngày 30/09/2018

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

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

Nguyễn Minh Dũng viết 19:13 ngày 30/09/2018

Ngôn ngữ C tồn tại rất nhiều versions

C tồn tại 3 versions

  • C89 (Hay C90)
  • C99
  • C11

Cách viết này không được thông dụng lắm đối với các compiler

Đạ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.

Bài liên quan
0